Skip to content

Releases: obsifox/DashWoo

DashWoo 1.6.0

Choose a tag to compare

@obsifox obsifox released this 22 Sep 07:03

DashWoo 1.6.0

Dwoo — هویت بصری تازه، خروجی محافظت‌شده، طراحی صفر، صفحه‌های دلخواه در منوی حساب و
بلوک‌های آماده با چیدمان مستقل برای هر صفحه.


در یک نگاه

نسخه 1.6.0
بستهٔ نصب dashwoo-1.6.0.zip
php ۸.۰ یا بالاتر
وردپرس ۶.۴ یا بالاتر
ووکامرس ۸.۵ یا بالاتر
المنتور ۳.۲۴ یا بالاتر (پرو ۳.۱۹ یا بالاتر)
آزمون‌ها ۶۶۳ آزمون / ۸٬۹۹۸ بررسی — همه سبز
تأیید بسته ۲۸ بررسی، ۰ خطا
نمایش صفحه‌ها ۸۸ صفحه (انگلیسی و فارسی) — ۰ ایراد چیدمان

۱) هویت بصری: Dwoo

لوگو و هویت بصری پروژه Dwoo شد؛ نام محصول، تنظیمات و هویت فنی همان DashWoo است.

  • نشان تازه: یک کاشی گرد با حرف «d» — به‌صورت مسیر و شکل رسم شده، پس هیچ‌وقت با قلم جانشین بدقعی نمی‌شود.
  • لوگوتایپ هندسی «Dwoo»، در دو حالت روشن و تیره (برای پس‌زمینهٔ تیره).
  • بنر، کارت مربع، کارت محصول و کارت عریض (webp) برای صفحه‌های عمومی فروشگاه.
  • چهار تصویر استاندارد مخزن وردپرس در ریشهٔ افزونه: icon-128x128.png، icon-256x256.png، banner-772x250.png، banner-1544x500.png.
  • نشان در سرصفحهٔ پیشخوان DashWoo، در ویجت‌های حساب و در برگهٔ آیکون المنتور دیده می‌شود — همه به‌صورت SVG درون‌خطی، بدون هیچ درخواست اضافه.
  • همهٔ فایل‌ها با یک فرمان بازتولید می‌شوند: python3 tools/brand/make-dwoo.py.

۲) خروجی محافظت‌شده (کد قفل‌شده)

نسخهٔ منتشرشدهٔ افزونه کد خوانا نیست:

  • هر فایل منطقی افزونه (۸۱ ماژول) به یک «پوکه» تبدیل می‌شود که بدنهٔ خودش را در زمان اجرا از هستهٔ ماژول (includes/kernel.php) می‌گیرد؛ فقط dashwoo.php و خود هسته خوانا می‌مانند — همان دو فایلی که وردپرس برای شناختن افزونه لازم دارد.
  • هر ماژول با کلید همان ساخت رمزگشایی می‌شود؛ محتوا به شناسهٔ ماژول گره خورده است، پس همان بایت‌ها زیر شناسهٔ دیگر هم به دادهٔ بی‌معنا می‌رسند.
  • اگر فایلی دستکاری شود: همان ماژول از کار می‌افتد (کلاسش ساخته نمی‌شود، نه نیمه‌کاره)، نام فایل به مدیر گزارش می‌شود، افزونه خودش را غیرفعال می‌کند و سایت و داده‌ها دست‌نخورده می‌مانند.
  • بدون کلید درست، محتوای ماژول خوانا نیست؛ کپی‌کردن فایل‌ها یک کپی می‌دهد، نه یک افزونهٔ کارکننده.
  • کلید می‌تواند بیرون از افزونه و در wp-config.php نگه داشته شود (فیلتر dashwoo_kernel_key).
  • هیچ بررسی مجوز، هیچ تماس با سرور سازنده و هیچ قفل دامنه‌ای وجود ندارد؛ فقط «نخواندنی + غیرقابل‌استفاده».
  • تأیید در خط تولید: bin/build.php هر محتوا را دوباره رمزگشایی می‌کند و بایت‌به‌بایت با src/ مقایسه می‌کند و اگر یک بایت فرق کند بسته ساخته نمی‌شود؛ bin/verify-build.php همین کار را از روی خود بسته انجام می‌دهد (۲۸ بررسی، ۰ خطا).

نکتهٔ مهم: بستهٔ زیپی که نصب می‌کنید را نگه دارید. هر ساخت جدید کلید تازه‌ای دارد؛ برای ترمیم یک نصب قدیمی فقط همان بستهٔ اول کار می‌کند.

۳) طراحی صفر (پیش‌فرض)

  • افزونه در بخش کاربری سایت هیچ شیوه‌نامه‌ای از خودش بارگذاری نمی‌کند: نه dashwoo.css، نه بستهٔ طراحی حساب، نه ریست و نه متغیر درون‌خطی — مگر اینکه خودتان روشن کنید.
  • ویجت‌ها فقط نشانه‌گذاری ساده با کلاس‌های آماده بیرون می‌دهند تا پوسته، CSS شما یا المنتور همه‌چیز را قالب‌بندی کند.
  • کلید تازه در «سیستم → عمومی»: بارگذاری شیوه‌نامۀ پلتفرم DashWoo (پیش‌فرض: خاموش).
  • توکن‌های طراحی (رنگ، قلم، فاصله، گردی، سایه) داده‌اند نه طراحی؛ آن‌ها همیشه بارگذاری می‌شوند تا المنتور و پوسته بتوانند از var(--dw-*) استفاده کنند.
  • یک نصب تازه یک بار رنگ‌آمیزی می‌شود (تا شبیه یک صفحه باشد، نه یک فهرست خالی)؛ از اولین ذخیرهٔ تنظیمات به بعد، فقط چیزی بارگذاری می‌شود که خودتان روشن کرده‌اید.

۴) صفحهٔ عمومی پروژه

  • صفحهٔ پروژه (PROJECT.md) انگلیسی است با یک بخش فارسی در پایان و پیش‌نمایش درون خودش.
  • پیش‌نمایش، تصویر واقعی است: نه تصویر که از نمای واقعی افزونه و شیوه‌نامهٔ واقعی گرفته شده‌اند — صفحهٔ تنظیمات، صفحهٔ طراحی حساب، پنل حساب با کارت منو و کارت محتوا، یک صفحهٔ سفارشی و راه‌انداز راه‌اندازی — هر کدام انگلیسی و فارسی.
  • بنرها: صفحهٔ پروژه (README) با بنر کامل 1544×500 باز می‌شود و صفحهٔ محصول/افزونه (PROJECT.md) با بنر کوچک 772×250؛ هر دو تصویر در ریشهٔ افزونه هم هستند.
  • فهرست ویژگی‌ها خلاصه شده (شش بند) و بخش‌های Language، Integrity و The My Account kit از صفحهٔ پروژه برداشته شده‌اند.
  • Contributors: obsifox — تنها نامی که در هر دو صفحه و در readme.txt می‌آید.
  • خط تولید تصاویر هم در مخزن است: tools/preview/ (رندر نماها + عکس‌برداری با Chromium).

۵) منو، صفحه‌های سفارشی و جعبهٔ محتوا

  • فهرست‌های تکرارشو در تنظیمات: یک ردیف برای هر صفحهٔ دلخواه با نشانی، برچسب، آیکون، ترتیب، نوع (صفحهٔ سایت یا پیوند)، دسترسی و نمایش/عدم نمایش در منو؛ در صفحهٔ تنظیمات می‌توانید ردیف اضافه کنید، جابه‌جا کنید و حذف کنید.
  • هر صفحهٔ دلخواه یک endpoint واقعی ووکامرس می‌شود و در منوی حساب می‌نشیند (پیشوند dwpage-). یک صفحه می‌تواند برای همه، فقط کاربران وارد‌شده یا فقط مدیران باشد، و می‌تواند از منو پنهان بماند ولی با نشانی مستقیم باز شود.
  • جعبهٔ محتوای هر صفحه (شامل پیشخوان) از چهار منبع تغذیه می‌شود — HTML، شورت‌کد، قالب المنتور یا فایل پوسته — و چهار قالب دارد: ساده، کارت، بخش، پوسته… یا هیچ قالبی، که پیش‌فرض است.
  • منو و پیشخوان کاملاً جدا شده‌اند: ظاهر منو از ظاهر محتوا مستقل است و هر کدام قالب خودش را دارد.

۶) راه‌انداز راه‌اندازی (فقط بار اول)

  • همان لحظهٔ فعال‌سازی، یک راه‌انداز چهارگامی پیشنهاد می‌شود: زبان → رنگ → بخش حساب → پایان. هر گام قابل رد کردن است و راه‌انداز از منوی DashWoo هر وقت خواستید دوباره اجرا می‌شود.
  • هر پاسخی که راه‌انداز می‌نویسد یک تنظیم معمولی است، از همان API صفحه‌های تنظیمات — نه یک لایهٔ جداگانه و نه دادهٔ پنهان.
  • سایتی که از نسخهٔ پیش از ۱.۵ به ۱.۶ می‌رسد، یک بار پرسیده می‌شود («راه‌انداز از نسخهٔ ۱.۶.۰ اضافه شده؛ یک بار اجرایش کنید یا ببندید») و می‌تواند همین حالا ردش کند. سایت‌هایی که پیش‌تر ۱.۶ داشته‌اند بی‌دلیل پیام نمی‌گیرند.
  • نصب‌های تازه هم هرگز بیش از یک بار پیشنهاد نمی‌گیرند: پاسخ (اجرا یا رد) در گزینهٔ dashwoo_setup ذخیره می‌شود.

۷) نمایش درست صفحه‌های تنظیمات

  • رفع سرریز: فهرست تکرارشوی «صفحه‌های سفارشی» که ده ستون دارد، از کارت بیرون می‌زد و فیلدهای کنارش را می‌برید. حالا هر ردیف یک شبکهٔ جمع‌شونده از سلول‌های برچسب‌دار است: هر فیلد جای کافی دارد، برچسب خودش را بالای سرش می‌بیند (سرصفحه روی صفحه پنهان است ولی ساختار جدول و roleها برای صفحه‌خوان باقی می‌ماند) و هیچ‌چیز از کارت بیرون نمی‌زند.
  • چهار نگهبان چیدمان در admin.css: فرزندهای گرید اجازه ندارند از ستونشان پهن‌تر شوند، فرم تنظیمات ستون برچسب را ثابت نگه می‌دارد، هیچ کنترل از سلول خودش بزرگ‌تر نمی‌شود (پس بلندترین گزینهٔ یک select اندازهٔ صفحه را تعیین نمی‌کند) و فهرست‌های تکرارشو می‌پیچند.
  • رفع مارک‌آپ خراب: سه نشانهٔ ناوبری (aria-label) و فیلد نام قلم، متن PHP خود را در HTML چاپ می‌کردند (aria-label=__( 'Subgroups', 'dashwoo' )) — نه ترجمه‌شده و نه معتبر؛ حالا متن ترجمه‌شده و درست است.
  • ابزار سنجش: php tools/preview/audit.php همهٔ ۴۳ صفحه (۳۹ بخش تنظیمات، مدیر دارایی‌ها، راه‌انداز، پنل حساب و یک صفحهٔ سفارشی) را در دو زبان رندر می‌کند و در مرورگر بی‌سر می‌سنجد که چیزی از کادر بیرون نزده یا بریده نشده باشد — نتیجهٔ فعلی: ۸۲ صفحه، ۰ ایراد.
  • آزمون‌های تازه: tests/integration/RenderedMarkupTest.php (HTML سالم، شناسه‌های یکتا، برچسب‌های درست، نگهبان‌های چیدمان) و tests/unit/AssetsIntegrityTest.php (شیوه‌نامه‌ها و اسکریپت‌ها: بسته، بدون آدرس بیرونی، بدون وابستگی به jQuery).

۸) اصلاح‌ها

  • زبان: برچسب‌های پیش‌فرض منوی حساب (مثل «سفارش‌ها») اگر پیش از بارگذاری بستهٔ ترجمه خوانده می‌شدند، انگلیسی می‌ماندند؛ حالا با رسیدن بستهٔ ترجمه، حافظهٔ تنظیمات پاک می‌شود و همه‌چیز در زبان درست بازخوانی می‌شود.
  • wp_register_style در محیط آزمون اضافه شد تا بارگذاری شرطی شیوه‌نامه دقیق آزمون‌پذیر باشد.

۹) بلوک‌های آماده و چیدمان مستقل هر صفحه

حالا می‌توانید صفحهٔ حساب را مثل یک صفحهٔ مدرن، تکه‌تکه بسازید — هم در المنتور، هم با
شورت‌کد — و برای هر اندپوینت چیدمان جداگانه بگذارید.

  • سه بلوک تازه (و هر کدام یک شورت‌کد):
    • کارت پروفایل مشتری — [dashwoo_account_profile_card] با چهار چیدمان (هیرو، فشرده،
      خطی، ساده)، تصویر یا حروف اول نام، «عضو از …»، خط واقعیت‌ها و نوار پیشرفت؛
    • کاشی‌های آمار — [dashwoo_account_stats] با تا شش ستون: تعداد سفارش‌ها، مجموع خرید
      (با قالب و واحد پول خودِ فروشگاه)، دانلودهای در دسترس و نشانی‌های ذخیره‌شده — همه از
      دادهٔ خودِ مشتری، پس هیچ عددی کهنه نمی‌شود؛
    • فهرست پیشرفت/دستاورد — [dashwoo_account_progress] که هر ردیفش از عدد واقعی مشتری
      پر می‌شود (سفارش‌ها، مجموع خرید) یا از عددی که خودتان می‌نویسید.
  • کاشی خالی کشیده نمی‌شود: اگر مقداری برای نمایش نباشد، آن ردیف چاپ نمی‌شود؛ هیچ صفر
    ساختگی و هیچ برچسب بی‌عدد.
  • بدون طراحی: بلوک‌ها فقط نشانه‌گذاری و قلاب کلاس می‌دهند (.dw-acc__profile-*،
    .dw-acc__stat-*، .dw-acc__progress-*، data-dw-*)؛ رنگ، گردی و قلم از پوسته،
    CSS خودتان یا المنتور می‌آید. تنها چیزی که دش‌وو تعیین می‌کند شمار ستون‌های کاشی‌هاست،
    چون با HTML نمی‌شود گفت «چهار ستون».
  • سرتیتر گروه در منو: در ردیف‌های تکرارشوی منو، ردیفی که «— سرتیتر گروه —» را انتخاب
    کند فقط یک عنوان بین آیتم‌ها می‌شود (مثل ACCOUNT و PROFILE در طرح‌های امروزی)، نه لینک.
  • چیدمان مستقل هر اندپوینت: در «قالب‌ها» برای هر اندپوینت دو گزینه هست — «قالب المنتور
    این صفحه» و «شکل قاب محتوا این صفحه». صفحهٔ سفارشی یا اندپوینت افزونهٔ دیگر هم فرقی
    نمی‌کند؛ همه‌شان یک اندپوینت درجه‌یک‌اند.
    • قالب را از «قالب‌ها → سازندهٔ پوستهٔ المنتور» بردارید و شناسه‌اش را بگذارید؛
    • اگر قالب حذف شود یا خالی باشد، دش‌وو به نمایش عادی برمی‌گردد — هیچ صفحه‌ای سفید
      نمی‌شود؛
    • جاهایی که این چیدمان اعمال می‌شود: پنل حساب، جعبهٔ محتوا، شورت‌کدها و ویجت‌ها (به‌جز
      وقتی خودتان منبع را «فقط ووکامرس/خود دش‌وو» بگذارید).
  • راه‌های دیگر گفتن یک فهرست به شورت‌کد: کنار JSON (که خودش ] دارد و در شورت‌کد دردسر
    می‌سازد)، شکل سادهٔ label:Orders|source:orders;;label:Spent|source:spent هم پذیرفته
    می‌شود؛ و اگر ورودی خراب باشد، به همان کاشی‌های پیش‌فرض برمی‌گردد.
  • ۶۵ رشتهٔ تازه ترجمه شد: شاخص کل ترجمه POT ۱٬۱۷۸ / PO ۱٬۱۷۸ / صفر گم‌شده.

۱۰) آزمون‌ها و ابزارها

  • ۶۶۳ آزمون / ۸٬۹۹۸ بررسی: واحد ۲۵۰، یکپارچه ۲۶۵، کارکردی ۱۲۸، رگرسیون ۲۰ — همه سبز، بدون هیچ وابستگی بیرونی.
  • آزمون‌های تازه: KernelTest (هستهٔ ماژول)، ProtectedBuildTest (ساخت محافظت‌شده و خراب‌کردن عمدی آن)، BrandIdentityTest (کل کیت Dwoo)، ScreenshotsTest، ProjectPageTest، ZeroCssFlowTest (هیچ شیوه‌نامه‌ای در بخش کاربری)، WizardFlowTest (راه‌انداز: بار اول، ارتقا از پیش ا...
Read more

DashWoo 1.5.0

Choose a tag to compare

@obsifox obsifox released this 21 Sep 13:05

DashWoo 1.5.0 — کل پروژه انگلیسی شد، فارسی به‌صورت ترجمه می‌آید

این نسخه همان چیزی است که خواستید: تمام پروژه (افزونه، پوستهٔ مدیریت، ابزارک‌ها،
تست‌ها، ابزارها و مستندات) به‌زبان انگلیسی نوشته شده و زبان فارسی به‌صورت بستهٔ
ترجمهٔ کامل
همراه آن می‌آید. یعنی سایت انگلیسی، DashWoo را انگلیسی می‌بیند و سایت فارسی،
همان رابط را کامل فارسی می‌بیند — بدون اینکه هیچ جمله‌ای در کد به فارسی نوشته شده باشد.

قلم مقدار
رشته‌های قابل‌ترجمه ۱۰۳۵ رشته در languages/dashwoo.pot
بستهٔ فارسی languages/dashwoo-fa_IR.po + .mo — ۱۰۳۵/۱۰۳۵ ترجمه‌شده، صفر جاافتاده
بستهٔ جاوااسکریپت languages/dashwoo-fa_IR-<md5>.json (برای wp.i18n در اسکریپت مدیریت)
زبان پیش‌فرض «پیروی از زبان سایت» (site) — به‌علاوهٔ گزینه‌های «انگلیسی» و «فارسی»
تست‌ها ۴۷۴ آزمون / ۷۲۸۵ assertion — همه سبز

۱) تمام رشته‌ها انگلیسی شدند

  • ۴۵ فایل، ۹۸۶ مورد و ۸۲۷ رشتهٔ یکتا که قبلاً در کد به فارسی نوشته شده بودند، به انگلیسی
    برگردانده و داخل __( '…', 'dashwoo' ) قرار گرفتند.
  • ۲۰۸ رشتهٔ دیگری که از قبل انگلیسی بودند ولی قابل ترجمه نبودند (پیام‌های گزارش سازگاری،
    خطاهای REST، برچسب قابلیت‌های میزبان، برچسب گزینه‌ها و…) هم پیدا و بسته‌بندی شدند؛
    ابزار tools/i18n/wrap-literals.py این کار را انجام می‌دهد.
  • راهنماها و مستندات (README.md، readme.txt، docs/ARCHITECTURE.md، docs/TESTING.md،
    docs/TEST-MATRIX.md، docs/RELEASE.md) کامل انگلیسی‌اند. تنها سندهای فارسی باقی‌مانده،
    همین گزارش‌های فارسی تحویلی هستند.
  • صفر خط فارسی در درخت سورس باقی مانده است (تنها استثنا: پوشهٔ languages/ که ترجمهٔ
    فارسی در آن زندگی می‌کند).

۲) لایهٔ زبان (تازه)

کلاس DashWoo\I18n\Language تنها جایی است که زبان را تعیین می‌کند:

  • تنظیمات → سیستم → عمومی → «زبان پلتفرم» با سه گزینه:
    • پیروی از زبان سایت (پیش‌فرض) — سایت فارسی، DashWoo فارسی؛
    • انگلیسی — DashWoo انگلیسی می‌ماند حتی روی سایت فارسی؛
    • فارسی — DashWoo فارسی می‌شود حتی روی سایت انگلیسی.
  • فیلترها فقط روی دامنهٔ متنی dashwoo اثر دارند؛ ووکامرس و پوستهٔ سایت دست‌نخورده می‌مانند.
  • بستهٔ ترجمه در init بارگذاری می‌شود (روش استاندارد وردپرس + بارگذاری مستقیم وقتی زبان
    انتخابی با زبان سایت فرق دارد)، و بستهٔ .json هم با
    wp_set_script_translations() به اسکریپت مدیریت داده می‌شود تا wp.i18n هم فارسی شود.
  • RTL از زبان پیروی می‌کند: با فارسی، کامپایلر توکن‌ها --dw-direction: rtl را می‌نویسد و
    دیزاین‌سیستم با خصوصیت‌های منطقی (margin-inline-start و…) چیده می‌شود.

۳) ابزار و دروازهٔ ساخت

  • tools/i18n/extract.py — پیدا کردن رشته‌ها، tools/i18n/apply.py — مهاجرت رشته‌ها،
    tools/i18n/wrap-literals.py — بسته‌بندی رشته‌های انگلیسیِ قابل‌ترجمه‌نشده،
    tools/i18n/build-catalogue.py — ساخت POT، هم‌گام‌سازی PO، کامپایل MO و نوشتن JSON.
  • build-catalogue.py --strict بخشی از دروازهٔ ریلیز است: اگر یک رشته ترجمه نداشته باشد،
    ساخت متوقف می‌شود.
  • تست‌های تازه: tests/unit/I18nCatalogueTest.php (نبودِ ترجمه، رشتهٔ بی‌صاحب، گم‌شدن
    %s/%d، تطابق MO با PO، جای درست JSON، انگلیسی‌بودن درخت سورس) و
    tests/integration/LanguageIntegrationTest.php (زبان سایت، زبان انتخابی، خواندن واقعی
    بسته از فایل، رندر فارسی/انگلیسی حساب کاربری و گزارش سازگاری، RTL و --dw-direction).

۴) ارتقا امن است

سایت فارسی‌ای که روی ۱.۴.۰ است، بعد از ارتقا همان فارسی را می‌بیند: مقدار «زبان پلتفرم»
در تنظیمات حفظ می‌شود و اگر زبان سایت فارسی باشد، گزینهٔ پیش‌فرض «پیروی از زبان سایت» هم
فارسی می‌دهد. هیچ داده‌ای پاک نمی‌شود و هیچ چیزی از تنظیمات از دست نمی‌رود.

۵) اعداد این نسخه

قلم مقدار
بستهٔ نصب‌شدنی dashwoo-1.5.0.zip — ۵۴۷٬۸۸۳ بایت
مانیفست ۱۰۷ فایل هش‌شده
تست‌ها ۴۷۴ آزمون / ۷۲۸۵ assertion (سبز)
آزمون مرورگر (node + jsdom) ۳۵ بررسی (PASS)
لینت ۲۳۲ بررسی خودکار / ۰ اشکال
تأیید بسته bin/verify-build.php — ۲۳ بررسی / ۰ خطا

نصب: پیشخوان وردپرس → افزونه‌ها → افزودن → بارگذاری افزونه → dashwoo-1.5.0.zip.
نیازمندی‌ها: PHP 8.0+، وردپرس 6.4+ (ووکامرس و المنتور اختیاری).

DashWoo 1.4.0

Choose a tag to compare

@obsifox obsifox released this 21 Sep 12:22

DashWoo 1.4.0 — پنل دوکارتی، قالب‌ها، و المان‌های بدون دیزاین خودکار

این نسخه پنج چیزی را که بعد از ۱.۳.۱ گفتید، انجام می‌دهد: هیچ المانی دیزاین خودکار
ندارد، فقط یک گروه DashWoo در المنتور دیده می‌شود، هر المان کامل قابل نمایش/پنهان‌کردن
است، کارت دوم پنل حساب کاربری ساخته شد، و محتوای هر بخش از روی قالب رندر می‌شود.
هویت برند DashWoo و کارت معرفی محصول (webp) هم اضافه شد.

۱) هیچ دیزاین خودکاری داخل المان نیست

  • کلید اصلی: «حساب کاربری → دیزاین» → «CSS خودکار DashWoo». خاموش باشد، بستهٔ استایل
    DashWoo (assets/css/account.css) هرگز بارگذاری نمی‌شود.
  • کنارِ خاموش‌کردن، یک ریست خنثی اختیاری (box-sizing و پاک‌کردن پیش‌فرض‌ها) هست؛ نه رنگ،
    نه فاصله، نه گوشه.
  • تزریق متغیرهای --dw-acc-* هم جدا قابل خاموش‌کردن است.
  • هر ابزارک یک مود «مارک‌آپ خام» (dw-acc--bare) دارد: بدون هیچ کلاس تزئینی، فقط ساختار و
    کلاس‌های معنایی. هر کلاس و هر متغیر --dw-acc-* را در Elementor «Advanced → CSS Classes»
    یا «Custom CSS» خودتان می‌دهید.

نتیجه: حالا المان‌ها همان‌طور که خواستید «خام» بیرون می‌آیند و شما دیزاین را تعیین می‌کنید.

۲) یک گروه DashWoo در المنتور (به‌جای دو گروه)

پنل المنتور قبلاً «dashwoo» و «dashwoo | dashwoo حساب کاربری» را کنار هم نشان می‌داد. علتش
دو مسیر ثبت مستقل بود. حالا:

  • یک فهرست ابزارک در Account\Elementor_Bridge::widget_classes() تعریف می‌شود و همان یک
    فهرست هم روی قلاب جدید المنتور و هم روی قلاب قدیمی (elementor/widgets/widgets_registered)
    ثبت می‌شود؛
  • تنها یک دستهٔ «DashWoo» وجود دارد (۱۲ ابزارک حساب کاربری + آیکون)؛ دسته‌های اضافی فقط اگر
    با فیلتر dashwoo_elementor_extra_categories خودتان بخواهید ساخته می‌شوند.

۳) هر المان: چه چیزی نمایش داده شود و چه چیزی نه

هر ابزارک حساب کاربری یک بخش تازهٔ «چه چیزی نمایش داده شود» دارد:

  • نمایش/پنهان‌کردن خودِ المان؛
  • تک‌تک اجزا: آیکون‌ها، عنوان، اطلاعات کنار عنوان (تعداد/تاریخ)، شمارنده، توضیح کوتاه، آواتار،
    فلش‌ها، دکمهٔ اقدام؛
  • برای چه کسانی: همه / فقط کاربران واردشده / فقط مدیران سایت؛
  • پنهان در: دسکتاپ / تبلت / موبایل (کلاس‌های dw-hide-*)؛
  • منوی حساب کاربری dw_icon_position (آیکون قبل یا بعد از متن) دارد.

منو پیش‌فرض بدون استایل است و کاملاً قابل ویرایش: ردیف‌های ریپیتر (id، برچسب، آیکون،
نمایش/پنهان، شمارنده، و نشانی دلخواه — لینک‌های بیرونی خودشان target="_blank" می‌گیرند)،
و شکل‌های plain (خام) / menu / tabs / rail.

۴) کارت دوم پنل حساب کاربری

  • پنل حالا دو کارت است: کارت منو (dw-acc__panel-aside) کنار کارت محتوا
    (dw-acc__panel-main)؛ اندازه و فاصلهٔ کارت منو با دو متغیر
    --dw-acc-panel-aside و --dw-acc-panel-gap کنترل می‌شود (قابل تنظیم در تنظیمات و ویجت).
  • کلیک روی «سفارش‌ها» → همان endpoint از طریق مسیر REST خودِ سایت
    (dashwoo/v1/account/panel) خوانده می‌شود و فقط داخل کارت محتوا می‌نشیند؛ آدرس صفحه
    هم همگام می‌شود (اگر خواسته باشید). دقیقاً همان کارکرد قبلی، این بار بدون رفرش کل صفحه.
  • کلیک روی هر ردیف سفارش → جزئیات همان سفارش (view-order/<id>) در همان کارت، با دکمهٔ
    «بازگشت به سفارش‌ها».
  • سه حالت: swap (پیش‌فرض)، modal (جزئیات روی صفحه) و stacked.
  • بدون جاوااسکریپت هم کار می‌کند: همهٔ لینک‌ها href واقعی دارند؛ اسکریپت فقط آن را
    بهبود می‌دهد. صفحه‌بندی هم داخل کارت می‌ماند (dw_page).
  • مهمان: کارت محتوا پیام ورود نشان می‌دهد، منو مثل فهرست مطالب می‌ماند و هیچ داده‌ای لو
    نمی‌رود. مالکیت سفارش بررسی می‌شود: مشتری هرگز سفارش دیگری را نمی‌بیند.

۵) قالب‌ها (Template)

  • Account\Templates: ۱۱ بخش (منو، پیشخوان، سفارش‌ها، جزئیات سفارش، دانلودها، آدرس‌ها،
    پرداخت، جزئیات حساب، پروفایل، فرم‌ها، خروج) و برای هر بخش دست‌کم دو شکل
    (کارت، جمع‌وجور، جدول، خط زمانی، شبکه، فهرست، دکمه، خام).
  • انتخاب قالب در تنظیمات → حساب کاربری → قالب‌ها برای هر بخش، و در خود ویجت
    («پیش‌فرض تنظیمات» = بازگشت به قالب پیش‌فرض).
  • بازنویسی از پوسته: فایل‌های شما مقدم‌اند —
    wp-content/themes/<پوسته>/dashwoo/account/orders--table.php (و فیلتر
    dashwoo_account_template_candidates).
  • ابزارک‌های endpoint دو کلید تازه دارند: منبع محتوا (auto / native / dashwoo) و
    قالب.

هویت DashWoo و کارت معرفی محصول

  • لوگو و نشان برند: logo.svg، logo-dark.svg، logo-mark.svg (هر دو کارت پنل در نشان
    دیده می‌شود)، آیکون‌های ۲۵۶ و ۵۱۲، و پالت همراستا با توکن‌های دیزاین
    (Account\Brand::palette()).
  • کارت معرفی محصول برای سمت پابلیک/فوتر فروشگاه، با فرمت webp و متن فارسی:
    product-card.webp، product-wide.webp، product-square.webp
    (همه محلی، بدون هیچ درخواست بیرونی).
  • تب تازهٔ DashWoo در انتخاب‌گر آیکون المنتور با همان نشان و لوگوها.

کیفیت و آزمون

قلم مقدار
آزمون‌ها ۴۵۴ آزمون / ۵۰۵۷ assertion — همه سبز (۳۸ بخش / ۲۲۰ فیلد تنظیمات)
آزمون تازهٔ سرور AccountPanelTemplatesTest + AccountPanelScriptTest (قرارداد اسکریپت ↔ مارک‌آپ)
آزمون مرورگر (اختیاری) tests/js/panel.js — همان فایل JS داخل DOM واقعی (node + jsdom): ۳۵ بررسی، PASS
لینت PASS — ۲۲۷ بررسی خودکار، ۰ اشکال (سینتکس جاوااسکریپت هم گِیت شده)
بسته dashwoo-1.4.0.zip با BUILD-MANIFEST.txt و تأیید verify-build (۰ خطا)

سه ایراد واقعی که در همین نسخه پیدا و رفع شد: مقدار CSS بارگذاری (data-dw-loading) با متن
بارگذاری قاطی می‌شد؛ کلیک روی صفحه‌بندی داخل کارت می‌توانست به «پیشخوان» بپردازد (تطبیق آدرس
کوتاه‌ترین پیشوند را می‌گرفت)؛ و خاموش‌کردن «عنوان» در ویجت‌های endpoint اثری نداشت، چون
رندرکننده همیشه عنوان پیش‌فرض endpoint را برمی‌گرداند.

DashWoo 1.3.1

Choose a tag to compare

@obsifox obsifox released this 21 Sep 11:30

DashWoo 1.3.1 — ویرایش ناحیهٔ حساب کاربری با المنتور

این نسخه همان چیزی است که مانع می‌شد صفحهٔ داشبورد حساب کاربری با المنتور کاستومایز شود.

چرا قبلاً نمی‌شد؟ سه ایراد واقعی

  1. ابزارک‌های DashWoo در پنل المنتور ظاهر نمی‌شدند (روی المنتور قدیمی‌تر از ۳٫۵):
    فقط قلاب نسل جدید ثبت ابزارک پوشش داده شده بود. حالا قلاب قدیمی
    elementor/widgets/widgets_registered هم گرفته می‌شود و هر ۱۱ ابزارک ثبت می‌شوند.
  2. خودِ ویرایشگر المنتور به‌عنوان «سازنده» شناخته نمی‌شد: فقط حالت پیش‌نمایش بررسی
    می‌شد. حالا is_edit_mode()، پیش‌نمایش و iframe ویرایشگر هر سه پوشش داده می‌شوند؛ در نتیجه
    استایل و رفتار ناحیهٔ حساب کاربری در ویرایشگر هم دقیقاً مثل صفحهٔ نهایی است.
  3. داخل ویرایشگر چیزی برای دیدن نبود: مدیر فروشگاه از خودش سفارش و دانلودی ندارد، پس همهٔ
    بخش‌ها «خالی» رندر می‌شدند. حالا ویرایشگر با دادهٔ نمونه کار می‌کند: سه سفارش با وضعیت فارسی،
    دو دانلود و یک مشتری نمونه — تا چیدمان همیشه دیده و استایل‌پذیر باشد. دادهٔ واقعی مشتری
    هیچ‌وقت با نمونه جایگزین نمی‌شود.

ساخت چیدمان با یک کلیک

  • در تنظیمات → حساب کاربری → منبع قالب‌ها، دکمهٔ «ساخت / بازسازی چیدمان حساب کاربری در
    المنتور» یک سند واقعی المنتور (منو + پیشخوان + پروفایل + سفارش‌ها) در صفحهٔ حساب کاربری
    می‌نویسد و ویرایشگر را باز می‌کند؛ بعد از آن هر بخش قابل جابه‌جایی، حذف یا بازطراحی است.
  • همان دکمه به‌صورت یک نوار پایین صفحه داخل خود ویرایشگر هم پیشنهاد می‌شود، هر وقت برگه هنوز
    هیچ ابزارک DashWoo نداشته باشد.
  • اگر API سند المنتور در دسترس نباشد، محتوای صفحه با شورت‌کد [dashwoo_account] جایگزین
    می‌شود — همان ناحیه، سازگار با هر قالب.

گزارش آماده‌بودن المنتور

زیر همان دکمه، پنج ردیف وضعیت نشان داده می‌شود و هر کدام دقیقاً می‌گوید چه چیزی کم است:
افزونهٔ المنتور و نسخه‌اش، ثبت ابزارک‌های DashWoo، تعیین‌شدن صفحهٔ حساب کاربری، ساخته‌شدن سند
المنتور، و حالت منبع قالب (بومی/ترکیبی/المنتور).

Theme Builder (المنتور پرو)

مکان تازهٔ «حساب کاربری — DashWoo» ثبت می‌شود؛ اگر برایش قالب بسازید، همان قالب ناحیهٔ
حساب کاربری را می‌سازد و در غیر این صورت چیدمان تولیدی DashWoo.

کیفیت

  • ۴۰۰ تست / ۴۴۵۳ assertion، همه سبز — با ۲۳ آزمون تازهٔ مخصوص همین مسیر المنتور.
  • lint: ۲۱۰ بررسی خودکار، ۰ اشکال.
  • آزمون E2E تازه: از دکمهٔ ساخت چیدمان تا باز شدن ویرایشگر و دیده‌شدن منو و پوستهٔ حساب کاربری.

DashWoo 1.3.0

Choose a tag to compare

@obsifox obsifox released this 19 Sep 07:57

DashWoo 1.3.0 — بستهٔ «حساب کاربری»

این نسخه اولین بخش از نقشهٔ «دیگر کسی از ظاهر پیش‌فرض ووکامرس استفاده نکند» را کامل می‌کند: ناحیهٔ حساب کاربری، هم با ابزارک‌های پیشرفتهٔ المنتور و هم با تنظیمات کامل.

۱) ده ابزارک المنتور برای حساب کاربری

دستهٔ تازهٔ «DashWoo — حساب کاربری» در پنل المنتور ساخته شد:

نام ابزارک کار
dashwoo_account_dashboard هیرو: آواتار/حرف اول نام، نام کاربر، شمارنده‌ها و کارت‌های میان‌بر
dashwoo_account_nav منوی حساب در سه چیدمان: فهرست ستونی، تب افقی، کارت میان‌بر
dashwoo_account_profile کارت پروفایل با فیلدهای قابل ویرایش
dashwoo_account_orders سفارش‌ها: فهرست واقعی، وضعیت فارسی، حالت خالی هدایت‌شده به فروشگاه
dashwoo_account_downloads دانلودها
dashwoo_account_addresses آدرس‌ها (تحویل و صورتحساب)
dashwoo_account_payment روش‌های پرداخت
dashwoo_account_details جزئیات حساب
dashwoo_account_logout دکمهٔ خروج
dashwoo_account_forms فرم‌ها: پروفایل، گذرواژه، آدرس، ورود مهمان
  • شورت‌کد [dashwoo_account] هم کل ناحیه را در یک برگه یا بلاک می‌آورد.
  • علاوه بر کنترل‌های اختصاصی، هر ابزارک کنترل‌های سبک خودش را دارد: رنگ تأکید، گردی
    گوشه‌ها و حالت رنگی (روشن/تیره/هماهنگ با توکن‌های DashWoo) — که فقط روی همان نمونه
    اعمال می‌شود، نه روی کل سایت.
  • همهٔ رندر از یک موتور مشترک (Account\Renderer) می‌آید؛ پس ابزارک المنتور و شورت‌کد
    و صفحهٔ بومی دقیقاً یک ظاهر و یک رفتار دارند.

۲) گروه تنظیمات «حساب کاربری» (۵ بخش)

بخش فیلدها چه چیزی را کنترل می‌کند
چیدمان و بخش‌ها ۷ چهار چیدمان (ستونی، بالا، کارت، کارت + منو)، تعداد ستون، آیکون‌ها، شمارنده‌ها، منوی چسبان، بردکرامب
بخش‌های حساب کاربری ۲۶ (پویا) برای هر اندپوینت ووکامرس: برچسب، آیکون، ترتیب، نمایش/پنهان
ظاهر و رنگ‌ها ۷ رنگ تأکید و hover، گردی، اندازهٔ آواتار، عرض منو، پس‌زمینهٔ صحنه
فرم‌ها و رفتار ۵ فیلدهای پروفایل، اعتبارسنجی درجا، مقصد پس از ورود، پیام مهمان، عنوان بخش‌ها
منبع قالب‌ها ۵ فعال/غیرفعال، حالت (بومی/ترکیبی/المنتور)، چیدمان تولیدشده، شورت‌کد، اولویت قلاب

نکتهٔ مهم: فهرست اندپوینت‌ها پویا است. هر بخشی که ووکامرس یا هر افزونهٔ دیگری
اضافه کند، خودکار در همین صفحه ظاهر می‌شود، با برچسب خودش و پیش‌فرض «نمایان» — یعنی هیچ
تب حسابی بی‌اطلاع فروشگاه‌دار ناپدید نمی‌شود.

مرکز تنظیمات با این گروه از ۳۱ بخش / ۱۳۳ فیلد به ۳۶ بخش / ۱۸۴ فیلد / ۷ گروه رسید.

۳) پل بومی: تغییر در جای منوی ووکامرس

  • فیلترهای woocommerce_account_menu_items و woocommerce_get_endpoint_url منوی خود
    ووکامرس را در جا تغییر نام و ترتیب می‌دهند؛ آیتم خاموش فقط از منوی نمایشی حذف
    می‌شود و خود اندپوینت و مسیرش دست‌نخورده می‌ماند (لینک مستقیم، قالب سایت و
    افزونه‌های دیگر نمی‌شکنند). «خروج» همیشه آخر می‌ماند.
  • حالت‌های منبع: بومی (ووکامرس مسئول صفحه است)، ترکیبی، المنتور (DashWoo
    ناوبری و محتوای بومی را برمی‌دارد و صفحه به سازندهٔ صفحه می‌رسد).
  • گارد ایمنی: اگر برگه هنوز با المنتور ساخته نشده باشد یا پلتفرم در Compatibility Mode
    باشد، صفحهٔ بومی دست‌نخورده می‌ماند. صفحهٔ حساب کاربری هرگز سفید نمی‌شود.
  • استایل‌ها: یک بستهٔ CSS محلی که فقط در صفحهٔ حساب، پیش‌نمایش المنتور یا برگه‌ای که
    شورت‌کد دارد بارگذاری می‌شود؛ هیچ نشتی به کل سایت ندارد و هیچ درخواستی به بیرون نمی‌رود.

۴) سه اشکال واقعی که در مسیر پیدا و رفع شد

  1. حلقهٔ بی‌پایان: خواندن منوی ووکامرس همان فیلتری را صدا می‌زد که DashWoo به آن وصل
    است → با گارد re-entrancy حل شد (بدون آن، صفحهٔ حساب در حلقهٔ بی‌پایان می‌افتاد).
  2. ناپدید شدن اندپوینت‌های افزونه‌های دیگر: پیش‌فرضِ نمایش برای اندپوینت‌های ناشناخته
    «خاموش» بود → اکنون پیش‌فرض «روشن» است و برچسب خودِ افزونه حفظ می‌شود.
  3. بی‌عنوان ماندن ابزارک‌ها: اگر فروشگاه‌دار عنوانی تنظیم نمی‌کرد، برچسب دکمه خالی
    می‌شد → اکنون به برچسب همان اندپوینت برمی‌گردد.

۵) کیفیت و آزمون

  • ۳۷۷ آزمون / ۴۳۷۹ assertion — همه سبز (unit ۱۸۰ · integration ۱۰۴ · functional ۷۳ ·
    regression ۲۰) با اجرای کاملاً محلی و بدون هیچ وابستگی بیرونی.
  • سه مجموعهٔ آزمون تازه: AccountPackTest (داده و رندر)، AccountFlowTest (جریان‌های
    واقعی سایت با ووکامرس) و AccountWidgetsTest (سطح المنتور: ثبت ابزارک‌ها، کنترل‌ها و
    خروجی هر ابزارک).
  • اسپک E2E تازه با ۸ سناریو: نبود منوی بومی ووکامرس، سلامت همهٔ اندپوینت‌ها، صفر درخواست
    بیرونی، بارگذاری استایل فقط در ناحیهٔ حساب، فرم ورود مهمان، رسیدن رنگ تأکید تنظیمات به
    صفحه، و دسترس‌پذیری با کیبورد.
  • باگ‌گارد رگرسیون: سه گلدن (settings-schema، settings-totals = ۳۶/۱۸۴ و
    capability-map با ردیف account_area) عمداً و با بازبینی به‌روز شد.
  • تشخیص «بودن ووکامرس» به یک منبع حقیقت منتقل شد (dashwoo_has_woocommerce() و
    dashwoo_woocommerce_version() با فیلتر) تا هم آداپتر سازگاری و هم گزارش وضعیت یک
    پاسخ بگیرند و آزمون‌ها محیط «بدون ووکامرس» را قطعی بسازند.

۶) بسته

قلم مقدار
فایل dashwoo-1.3.0.zip
اندازه ۱۸۱٬۹۳۱ بایت
فایل‌های داخل ۸۱ فایل + BUILD-MANIFEST.txt (هش هر فایل)
تأیید ۲۳ بررسی خودکار، ۰ خطا؛ ۷۱ فایل PHP سالم؛ ۶۱ کلاس از طریق autoloader؛ بدون CDN
ساخت بازتولیدپذیر ساخت دوباره با همان SOURCE_DATE_EPOCH همان sha256 را می‌دهد

نصب / به‌روزرسانی

پیشخوان وردپرس → افزونه‌ها → افزودن → بارگذاری افزونه → فایل زیپ را انتخاب و نصب
کنید. اگر ۱.۲.۰ نصب است، فقط زیپ تازه را بارگذاری کنید؛ تنظیمات و فایل‌های شما در
wp-content/uploads/dashwoo/ دست‌نخورده می‌مانند.

نیازمندی‌ها: PHP 8.0+ · وردپرس 6.4+ · (ووکامرس 8.5+ و المنتور 3.24+ اختیاری — بدون
آن‌ها DashWoo کار می‌کند و فقط هشدار می‌دهد).

گام بعدی

پس از این نسخه: فروشگاه و حلقهٔ محصول، سپس صفحهٔ محصول، سپس سبد و تسویه — با همین
استاندارد: ابزارک‌های پیشرفته + تنظیمات کامل + پل بومی.

DashWoo 1.2.0

Choose a tag to compare

@obsifox obsifox released this 19 Sep 08:00

DashWoo 1.2.0

این نسخه دو کار را تمام می‌کند: باگ هشدار «افزونه‌های ناسازگار» ووکامرس رفع شده، و قابلیت‌های هاست خودکار خاموش/روشن می‌شوند.

۱) رفع باگ هشدار ووکامرس (ناسازگاری افزونه‌ها)

ریشهٔ دقیق باگ: ووکامرس فقط افزونه‌هایی را بررسی می‌کند که در فایل اصلی‌شان هدر
WC tested up to دارند. برای هر ویژگی فعال، افزونه‌ای که هیچ اعلان سازگاری نداده باشد
در دستهٔ «اعلام‌نشده» می‌افتد؛ اگر مقدار پیش‌فرض آن ویژگی incompatible باشد (در
ووکامرس فعلی: custom_order_tables یعنی HPOS)، ووکامرس افزونه را ناسازگار می‌شمارد و
پیام «ووکامرس تشخیص داده که برخی افزونه‌های فعال شما با ویژگی‌های ووکامرس ناسازگار است»
را نشان می‌دهد. DashWoo تا ۱.۱.۰ هیچ‌گاه FeaturesUtil::declare_compatibility() را صدا
نمی‌زد؛ پس تنها افزونهٔ آن فهرست بود — باگی از خود DashWoo، نه از هاست.

اصلاح: کلاس Compatibility\WooCommerce_Features روی قلاب before_woocommerce_init
(تنها قلابی که ووکامرس می‌پذیرد) برای ۲۸ شناسهٔ ممیزی‌شده رأی سازگاری اعلام می‌کند و هر
ویژگی تازه‌ای که FeaturesController زندهٔ ووکامرس گزارش کند را هم پوشش می‌دهد.
صفحهٔ سیستم → سازگاری ردیف تازهٔ woocommerce.feature_declarations را نشان می‌دهد تا
از پیشخوان ببینید اعلان رسیده است یا نه.

۲) قابلیت‌های هاست: خاموش و روشن شدن خودکار

زیرسیستم جدید Capabilities هر شش ساعت (و با دکمهٔ «بررسی مجدد») هاست را می‌سنجد:

قابلیت هاست ویژگی وابسته روی هاست بدون GD/zip
gd · imagick بهینه‌سازی تصاویر (WebP/AVIF) خودکار خاموش
zip بستهٔ فشردهٔ پشتیبان خودکار خاموش
multisite پیش‌فرض‌های شبکه خاموش (تک‌سایتی)
dom بازرسی ساختاری SVG روشن
  • blocked (قابلیت هاست نیست → همیشه خاموش) · off (خودتان خاموش کرده‌اید) · on
  • به‌محض اضافه شدن قابلیت، ویژگی خودبه‌خود روشن می‌شود؛ هیچ تنظیمی دوباره لازم نیست.
  • هرگز نمی‌توان برخلاف هاست روشن کرد.
  • محل: گروه سیستم → قابلیت‌ها + GET /system/capabilities و POST /system/capabilities/recheck.

۳) آزمون‌ها و بسته

  • ۳۳۰ آزمون / ۳۶۲۲ assertion — همه سبز (unit ۱۵۷ · integration ۹۴ · functional ۵۹ · regression ۲۰)
  • گارد جدید: کدهای ارسالی DashWoo هیچ دسترسی مستقیمی به جدول‌های ووکامرس
    (wp_posts, wp_postmeta, shop_order, جدول‌های HPOS) ندارند؛ تنها دو خواندن مجاز
    wc_get_product() و wc_get_order() هستند — هر دو API کِراد و HPOS-safe.
  • سمت ووکامرس هم با دابلی که قانون واقعی ووکامرس را پیاده می‌کند آزمایش می‌شود: باگ
    بازتولید و سپس رفع آن اثبات می‌شود.
قلم مقدار
بسته dashwoo-1.2.0.zip (۱۳۵٬۱۱۶ بایت)
sha256 2cbdcb5ff2add3e58cda955a3143aba49996c70bd86c280df81c8b45f3072853
تأیید بسته ۲۳ بررسی، ۰ خطا

نصب: وردپرس → افزونه‌ها → افزودن → بارگذاری افزونه → انتخاب فایل زیپ → نصب و فعال‌سازی.


تغییرات جزئی‌تر

  • فیلتر dashwoo_wc_feature_compatibility برای بازنویسی رأی هر ویژگی ووکامرس.
  • فیلتر dashwoo_capability_probe برای هاست‌های غیرمعمول + اکشن dashwoo_capabilities_changed.
  • تب «قابلیت‌ها» دو بخش دارد: جدول تشخیص خودکار و کلیدهای هر ویژگی.
  • سکشن تنظیمات features با توضیح فارسی هر ویژگی و غیرفعال شدن فیلدهای وابسته.
  • اصلاح: فراخوانی داینامیک استاتیک در PHP 8، شناسهٔ تکراری product_block_editor،
    بارِ extra تودرتو در ردیف آداپتر ووکامرس، و مسیر زیپِ سخت‌کدشده در اسکریپت انتشار.

DashWoo 1.1.0 — منوی سه‌سطحی و سازمان‌یافته

Choose a tag to compare

@obsifox obsifox released this 19 Sep 08:00

DashWoo 1.1.0 — منوی مرتب، سه‌سطحی و بدون لیست تخت

نصب/به‌روزرسانی: پیشخوان → افزونه‌ها → افزودن → بارگذاری افزونه → dashwoo-1.1.0.zip
(به‌روزرسانی درجا از ۱.۰.x؛ تنظیمات، فونت‌ها، آیکون‌ها و تصاویر دست‌نخورده می‌مانند.)

ساختار جدید پیشخوان

شش زیرمنو، هر کدام با تب‌های داخلی — دیگر همه‌چیز در یک لیست تخت دیده نمی‌شود:

گروه (زیرمنو) زیرگروه‌ها (تب) بخش‌ها
داشبورد — نمای کلی، وضعیت، دسترسی سریع
طراحی پایهٔ طراحی | کامپوننت‌ها رنگ‌ها، تایپوگرافی، فاصله‌ها، گردی، سایه، حاشیه | دکمه‌ها، فرم‌ها، کارت‌ها، جدول‌ها، نشان‌ها، هشدارها، Modal/Drawer، صفحه‌بندی
فونت و آیکون خانواده‌های فونت | آیکون‌ها گوگل فونت، فونت سفارشی، مدیریت فونت‌ها | آیکون‌ها، ابزارک آیکون
دارایی‌ها کتابخانه کتابخانهٔ رسانه + تنظیمات تصاویر، SVG و CSS/JS
المنتور یکپارچه‌سازی سطح یکپارچگی، Token Picker، همگام‌سازی Kit
سیستم عمومی | کارایی و تحویل | API و گزارش عمومی، سازگاری نسخه‌ها، به‌روزرسانی‌ها | عملکرد | REST API، گزارش‌ها، وضعیت سیستم

هر صفحه یک breadcrumb و یک ستون کناری «در این گروه» دارد و ترتیب بخش‌ها
تعیین‌شده و یکسان است.

همچنین در این نسخه

  • assets.zip و assets.gd اطلاعاتی (ℹ) هستند، نه هشدار — گزارش به‌خاطر آن‌ها زرد نمی‌شود.
  • GET /wp-json/dashwoo/v1/system/diagnostics + کارت «تشخیص محیط» برای تیکت هاست.
  • ۲۹۰ آزمون / ۲۹۵۴ assertion (۱۲ آزمون تازه برای ساختار منو).
Artifact sha256
dashwoo-1.1.0.zip d674fa6e6a16795c9522b57a485b928448d04a7820bdebb8aad0e0893b0cfcbc

License: GPL-2.0-or-later.

DashWoo 1.0.1 — informational notices for optional host capabilities

Choose a tag to compare

@obsifox obsifox released this 19 Sep 08:00

DashWoo 1.0.1 — fix: the environment report no longer goes yellow

نصب/به‌روزرسانی: پیشخوان وردپرس → افزونه‌ها → افزودن → بارگذاری افزونه → dashwoo-1.0.1.zip
(روی نسخهٔ ۱.۰.۰ به‌روزرسانی درجا انجام می‌شود؛ تنظیمات، فونت‌ها، آیکون‌ها و تصاویر دست‌نخورده می‌مانند.)

Fixed — assets.zip و assets.gd دیگر زرد نمی‌شوند

این دو مورد واقعاً «فقط اطلاع‌رسانی» هستند: DashWoo فونت‌ها و آیکون‌ها را با خواندن/نوشتن
سادهٔ فایل ذخیره و سرو می‌کند و هیچ‌گاه به ZipArchive یا GD نیاز نداشته است. از این نسخه
این دو ردیف با علامت ℹ (اطلاعاتی) نمایش داده می‌شوند، وضعیت آداپتر را زرد نمی‌کنند و هیچ
جزئی از گزارش (از جمله بخش ووکامرس) را با خودشان پایین نمی‌کشند. زیر هر مورد غیرسبز، یک
توضیح فارسی نوشته می‌شود که می‌گوید هاست چه چیزی را باید فعال کند (و اینکه اختیاری است).

Added

  • GET /wp-json/dashwoo/v1/system/diagnostics و کارت «تشخیص محیط» در صفحهٔ وضعیت سیستم:
    واقعیت‌های خام سرور (افزونه‌های PHP، disable_functions، محدودیت‌های ini، قابل‌نوشتن بودن
    پوشهٔ دارایی‌ها، نسخهٔ ووکامرس و المنتور) به‌صورت متن قابل‌کپی برای تیکت پشتیبانی هاست.
  • تشخیص دقیق GD: extension_loaded() در برابر function_exists() — اگر GD نصب است ولی
    توابعش در disable_functions بسته شده، دقیقاً همان گزارش می‌شود.
  • واژگان پنج‌حالتهٔ گزارش: ok / notice / warning / error / na که در آن notice خنثی است.

Verification

  • ۲۷۸ آزمون / ۲۸۱۱ assertion سبز (۷ آزمون تازه: خنثی بودن notice، هرگز-هشدار-نشدن
    قابلیت‌های اختیاری، سناریوی دقیق «ووکامرس فعال + نبود gd/zip»، وجود توضیح فارسی،
    رندر صفحهٔ وضعیت و مسیر diagnostics).
  • ۲۳ بررسی ساخت (بستهٔ سالم، هش همهٔ فایل‌ها، بارگذاری خودکار تمام کلاس‌ها، بدون CDN).
Artifact sha256
dashwoo-1.0.1.zip 38a4d13fee113b88f87f64b4a7e07be36e16d5cd2be75be6c289141709ad6cd3

License: GPL-2.0-or-later. Full Persian changelog in the repository README.

DashWoo 1.0.0

Choose a tag to compare

@obsifox obsifox released this 19 Sep 08:00

DashWoo 1.0.0 — public release

نصب: پیشخوان وردپرس → افزونه‌ها → افزودن → بارگذاری افزونه → انتخاب dashwoo-1.0.0.zip → نصب → فعال‌سازی.
پس از فعال‌سازی، منوی DashWoo و DashWoo → دارایی‌ها در دسترس است.

Highlights

  • Local Google Fonts pipeline (31 families, per-subset files, updates only changed weights)
  • Material Symbols / Material Icons variable fonts + Elementor icon widget (weight, FILL, GRAD, opsz)
  • Asset library in wp-content/uploads/dashwoo/ — your files survive plugin updates
  • Design tokens → CSS variables, 30-section Settings Center (129 fields), JSON import/export
  • Elementor integration on 3 levels: CSS variables → token picker control → optional Global Kit sync (with backup/restore)
  • Version compatibility layer with adapters and automatic Compatibility Mode
  • REST API dashwoo/v1 (29 routes) + extension API
  • Full Persian / RTL admin, zero CDN requests after install

Requirements

PHP 8.0+ · WordPress 6.4+ · WooCommerce 8.5+ and Elementor 3.24+ (optional)

Verification

  • 271 tests / 2764 assertions across unit, integration, functional and regression layers — all green
  • 7 verification layers total (adds WordPress/PHPUnit, Playwright E2E and build verification)
  • BUILD-MANIFEST.txt inside the package lists the sha256 of every shipped file
  • 23 automated build checks: archive layout, hashes, plugin header, PHP syntax of every file, full autoloader class-map resolution, no hard-linked CDN
Artifact sha256
dashwoo-1.0.0.zip 1da49db9bcd1a3fed3b5375d9cede0b70a1b8ecdc3e1b1daee164d9caf07a05f

License: GPL-2.0-or-later.