=== فرم‌های ال‌امضا ===
Contributors: elemza
Tags: forms, signature, digital-signature, persian, rtl
Requires at least: 6.0
Tested up to: 6.7
Requires PHP: 8.1
Stable tag: 0.5.1
License: GPL-2.0-or-later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

فرم‌هایی که در پنل ال‌امضا ساخته‌اید را داخل سایت وردپرسی نشان می‌دهد و پاسخ‌ها را — همراه با امضای الکترونیکی — به سامانه می‌فرستد.

== Description ==

این افزونه سایت وردپرسی شما را به فرم‌سازِ **ال‌امضا** وصل می‌کند.

فرم را یک بار در پنل ال‌امضا می‌سازید، کد کوتاهش را داخل هر برگه یا نوشته می‌گذارید، و همان
فرم با همان قواعد داخل سایت خودتان نمایش داده می‌شود. پاسخ‌ها به سامانه می‌روند و اگر فرم
امضا لازم داشته باشد، امضاکننده مستقیماً به صفحهٔ امضا هدایت می‌شود.

**چرا فرم را داخل وردپرس می‌کِشد و نه یک iframe:**
فرم با قالبِ خودِ سایت شما رندر می‌شود، در موبایل درست کار می‌کند، و موتورهای جست‌وجو
محتوای برگه را می‌بینند. با iframe هیچ‌کدام از این سه برقرار نیست.

= آنچه انجام می‌دهد =

* نمایش هر فرمِ منتشرشدهٔ ال‌امضا با یک کد کوتاه
* اعتبارسنجی همان‌قدر سخت‌گیر که خودِ سامانه انجام می‌دهد (پیش از ارسال، داخل مرورگر)
* پشتیبانی از قواعدِ نمایشِ شرطی — فیلدی که فقط با پاسخِ خاصی ظاهر می‌شود
* ارسال پاسخ به سامانه، و اگر شبکه قطع باشد **صف و تلاش دوباره** (پاسخ گم نمی‌شود)
* هدایت به امضای الکترونیکی برای فرم‌هایی که امضا لازم دارند
* هم‌گام‌سازیِ روزانهٔ ساختارِ فرم — اگر فرم را در پنل عوض کنید، سایت خودش می‌فهمد
* بایگانیِ محلیِ پاسخ‌ها در خودِ وردپرس — با صفحهٔ جزئیات و پیش‌نمایشِ عکس و امضا، فیلترِ
  فیلدی، و خروجی CSV با انتخابِ ستون
* بلوکِ گوتنبرگ، ابزارکِ المنتور، و «نمایش خودکار» (تسویهٔ ووکامرس، صفحهٔ سفارش، انتهای
  نوشته یا برگه) — بدونِ دست‌زدن به صفحه
* صفحهٔ «ظاهر»: رنگ، گوشه، اندازه و دکمه برای همهٔ فرم‌ها، بدونِ CSS
* هشدارِ کیف پول پیش از اینکه امضایی به‌خاطرش شکست بخورد
* محافظت از هرزنامه بدون کپچا (تلهٔ عسل + محدودیتِ نرخ)

= آنچه لازم دارید =

* یک حساب در [ال‌امضا](https://elemza.com)
* یک «توکنِ API» از پنل ← بخش API
* وردپرس ۶٫۰ به بالا و PHP ۸٫۱ به بالا

== Installation ==

۱. در پنل ال‌امضا به بخش **API** بروید و روی **دانلود افزونهٔ وردپرس** بزنید.
۲. در وردپرس: **افزونه‌ها ← افزودن ← بارگذاری افزونه** و فایل zip را انتخاب کنید.
۳. **هم‌اکنون نصب کن** و بعد **فعال‌سازی**.
۴. منوی تازهٔ **ال‌امضا** در پیشخوان ظاهر می‌شود. به **ال‌امضا ← تنظیمات** بروید،
   توکن API را بگذارید و ذخیره کنید.
۵. به **ال‌امضا ← فرم‌ها** بروید. فرم‌های حسابتان فهرست می‌شوند؛ کنارِ فرمِ موردنظر
   **اتصال** را بزنید.
۶. همان‌جا کد کوتاهش به شما نشان داده می‌شود. آن را داخل هر برگه یا نوشته بگذارید:

    [elemza_form slug="frm-xxxxxxxx"]

اگر می‌خواهید فیلدها را جدا‌جدا در چیدمانِ خودتان بچینید، دو کد کوتاهِ دیگر هم هست:
`[elemza_field]` برای یک فیلد و `[elemza_submit]` برای دکمهٔ ارسال.

راهنمای کاملِ گام‌به‌گام: در پنل ال‌امضا، بخش API ← «راهنمای افزونهٔ وردپرس».

== Frequently Asked Questions ==

= توکن API را از کجا بیاورم؟ =

پنل ال‌امضا ← API ← توکن‌ها ← ساختِ توکن تازه. دسترسی‌های لازم: `forms:read` و `forms:write`.
اگر فرم امضا دارد، `contracts:read` هم لازم است.

توکن این شکل است: یک عدد، بعد `|`، بعد یک رشتهٔ بلندِ حرف و عدد — مثلِ `12345|abc…`. کلش را
یک‌جا کپی کنید؛ نصفش کار نمی‌کند. هیچ پیشوندی (مثلِ `pat_live_`) ندارد، و **از روی خودِ توکن
نمی‌شود فهمید آزمایشی است یا واقعی** — این را افزونه بعد از ذخیره، در «ال‌امضا ← تنظیمات»،
از خودِ سرور می‌پرسد و همان‌جا می‌نویسد.

= اگر اینترنتِ سرور قطع باشد پاسخ‌ها گم می‌شوند؟ =

نه. پاسخ اول در خودِ وردپرس ذخیره می‌شود و بعد فرستاده می‌شود. اگر ارسال نشد، در صف می‌ماند
و افزونه تا پنج بار (با فاصله‌های ۱، ۵، ۳۰ و ۱۲۰ دقیقه) دوباره تلاش می‌کند. هر تلاش کلیدِ
یکتای خودش را دارد، پس ارسالِ دوباره هرگز پاسخِ تکراری نمی‌سازد.

= اگر فرم را در پنل عوض کنم چه می‌شود؟ =

افزونه روزی یک بار ساختار را می‌گیرد. تغییرهای بی‌خطر (نامِ نمایشی، ترتیب، متن) خودکار اعمال
می‌شوند. تغییرهای پرخطر (فیلدِ الزامیِ تازه، تغییرِ نوع، حذفِ فیلد) اعمال **نمی‌شوند** تا
خودتان در پیشخوان تأییدشان کنید — تا فرمی که مردم در حالِ پرکردنش هستند زیرِ پایشان عوض نشود.

= آیا داده‌ها روی سایتِ من هم می‌مانند؟ =

بله، یک نسخه در وردپرس بایگانی می‌شود و می‌توانید CSV بگیرید.

غیرفعال‌کردنِ افزونه هیچ‌چیز را پاک نمی‌کند. با **حذفِ** افزونه هم پیش‌فرض این است که
پاسخ‌ها بمانند — چون آن‌ها سرنخ‌های کسب‌وکارِ شمایند و وردپرس برای حذف نه تأییدِ دومی
می‌گیرد و نه راهِ برگشتی دارد. اگر می‌خواهید با حذفِ افزونه پاسخ‌ها هم پاک شوند، در
«ال‌امضا ← تنظیمات» تیکش را بزنید. توکن و کلیدهای امنیتی در هر دو حالت پاک می‌شوند.

= آیا با المنتور / گوتنبرگ کار می‌کند؟ =

بله، هر دو بلوک/ابزارکِ خودشان را دارند (از ۰٫۴٫۰): در ویرایشگرِ وردپرس بلوکِ **«فرم ال‌امضا»**
را اضافه کنید و فرم را از فهرست انتخاب کنید — پیش‌نمایشش همان‌جا دیده می‌شود؛ در المنتور
ابزارکِ **«فرم ال‌امضا»** را بکشید. کد کوتاه هم همچنان همه‌جا کار می‌کند.

= می‌خواهم فرم بدونِ دست‌زدن به صفحه نمایش داده شود (مثلاً در تسویهٔ ووکامرس) =

**ال‌امضا ← فرم‌ها ← نمایش خودکار**: فرم را انتخاب کنید و بگویید کجا — بالا یا پایینِ صفحهٔ
تسویهٔ ووکامرس، صفحهٔ «سفارش ثبت شد»، انتهای هر نوشته، یا انتهای یک برگهٔ مشخص. تسویهٔ
کلاسیک و بلوکی هر دو پشتیبانی می‌شوند.

فرم عمداً **بیرونِ** فرمِ سفارشِ ووکامرس قرار می‌گیرد، نه داخلش: اگر داخل بود، فیلدهای
اجباریِ ما جزوِ اعتبارسنجیِ فرمِ سفارش می‌شد و «ثبت سفارش» تا پرشدنِ فرمِ ما کار نمی‌کرد.
ثبتِ سفارشِ مشتری هرگز نباید به فرمِ ما گره بخورد.

= تصاویر و فایل‌هایی که مردم بارگذاری کرده‌اند کجاست؟ =

**ال‌امضا ← پاسخ‌ها ← جزئیات** (کنارِ هر پاسخ). عکس‌ها و امضا همان‌جا نشان داده می‌شوند و
فایل‌های دیگر دکمهٔ دانلود دارند. نسخهٔ کامل — همراه با سندِ نهایی — در پنل ال‌امضا هم هست.

= پاسخ‌ها دیر به سامانه می‌رسند =

از ۰٫۴٫۰ هر پاسخ همان لحظه فرستاده می‌شود و صف فقط برای تلاشِ دوباره است. اگر باز هم
پاسخی در صف ماند، **ال‌امضا ← تنظیمات ← وضعیت ارسال** می‌گوید چرا: صفِ وردپرس فقط وقتی
اجرا می‌شود که کسی سایت را باز کند. راهِ حل همان‌جا نوشته شده — در پنلِ هاست، هر ۵ دقیقه
نشانیِ `wp-cron.php` سایتتان را صدا بزنید.

= رنگِ دکمهٔ ارسال را چطور عوض کنم؟ =

برای همهٔ فرم‌های سایت: **ال‌امضا ← ظاهر** — رنگ، گوشه‌ها، اندازه و شکلِ دکمه (توپُر، توخالی،
یا «مثلِ دکمه‌های خودِ قالب») با پیش‌نمایشِ زنده، بدونِ هیچ CSS.

فقط برای یک برگه، بدونِ CSS — یک ویژگی به کدِ کوتاه اضافه کنید (روی تنظیماتِ سایت برنده می‌شود):

`[elemza_form id="frm-…" accent="#0a7d55"]`

همین یک رنگ، دکمهٔ ارسال، حلقهٔ فوکوس، تقویمِ شمسی و پنجرهٔ امضا را با هم هماهنگ می‌کند؛
لازم نیست بدانید آن دو تا اصلاً وجود دارند. فقط کدِ رنگِ شانزده‌شانزدهی پذیرفته می‌شود
(`#0a7d55` یا `0a7d55`) — نامِ رنگ («قرمز»، «red») عمداً پذیرفته نمی‌شود.

اگر فرم را تکه‌تکه چیده‌اید، همان ویژگی روی `[elemza_field]` و `[elemza_submit]` هم کار
می‌کند و روی هرکدام که دکمه را می‌سازد باید نوشته شود.

= می‌خواهم بیشتر از رنگ را عوض کنم =

یک کلاسِ دلخواه بگیرید و در «نمایش ← سفارشی‌سازی ← CSS اضافه» رویش بنویسید:

`[elemza_form id="frm-…" class="my-form"]`

`.my-form .elemza-submit { … }`

کلاسِ `elemza-form` همیشه سرِ جایش می‌ماند و کلاسِ شما کنارش می‌نشیند، پس استایل‌های خودِ
افزونه از بین نمی‌روند.

**نکته‌ای که تا نسخهٔ ۰٫۳٫۱ درست کار نمی‌کرد:** استایل‌نامهٔ افزونه پیش‌تر در **پایینِ**
صفحه بار می‌شد و «CSS اضافه»ی وردپرس در **بالای** صفحه — و در CSS، در برابریِ اولویت، هرکه
دیرتر بیاید برنده است. یعنی قاعده‌ای که می‌نوشتید بی‌صدا بی‌اثر می‌شد. حالا وقتی صفحه کدِ
کوتاهِ ما را داشته باشد، استایل‌نامه در بالای صفحه بار می‌شود و CSSِ شما برنده است.

اگر فرم را با یک صفحه‌ساز (المنتور و مانندش) گذاشته‌اید که متنش در محتوای برگه نیست، هنوز
حالتِ قدیمی برقرار است؛ در آن صورت `!important` بگذارید یا از `accent=` بالا استفاده کنید.

== Changelog ==

= 0.5.1 =
* 🩸 **جمعِ فرمولی که به یک فیلدِ پنهان وابسته است، دیگر عددِ غلط نشان نمی‌دهد.** اگر فرمولی از
  فیلدی استفاده کند که به بازدیدکننده نشان داده نمی‌شود، مقدارِ آن فیلد هرگز به صفحه نمی‌رسد و
  محاسبه در مرورگر غلط درمی‌آمد. حالا کنارِ چنین فرمولی نوشته می‌شود «پس از ارسال محاسبه می‌شود»
  و عددِ درست را خودِ ال‌امضا هنگامِ ثبت حساب می‌کند. بقیهٔ فرمول‌ها مثلِ قبل همان لحظه حساب می‌شوند.

= 0.5.0 =
* 🔗 **فرمی که «جدولِ ردیف‌دار» دارد، با پیوند به صفحهٔ اصلی نشان داده می‌شود.** این نوعِ
  تازه چند ردیف می‌گیرد (مثلِ اقلامِ یک فاکتور) و افزونه فعلاً برای هر فیلد یک کنترل دارد؛
  پس به‌جای جعبهٔ متنی‌ای که فرستادنش همیشه رد می‌شد، بازدیدکننده به فرمِ اصلی هدایت می‌شود.
  بقیهٔ فرم‌ها هیچ تغییری نمی‌کنند.

= 0.4.1 =
* 🩸 **پاسخِ درست پیش از ارسال رد می‌شد.** فیلدِ متنی که روی «حداکثر ۱۱» محدود شده بود،
  شناسهٔ ملیِ ۱۱رقمیِ درست را با پیامِ «حداکثر مقدار: 11» رد می‌کرد، و «001» در فیلدی با
  «حداقل ۳» رد می‌شد. معنای حداقل/حداکثر حالا از نوعِ فیلد می‌آید: روی عدد و مبلغ «مقدار»، و
  روی بقیه «تعدادِ کاراکتر» — همان قاعده‌ای که سامانه هنگامِ ثبت اعمال می‌کند. محدودیتِ
  «تعدادِ رقم» هم برای فیلدهای عددی پشتیبانی می‌شود.
* 🩸 **مبلغ با جداکنندهٔ هزارگان رد می‌شد.** «1,000,000» در فیلدِ مبلغ پیامِ «مقدار باید عددی
  باشد» می‌گرفت، در حالی که سامانه همان را می‌پذیرد. حالا ویرگول، «٬» و فاصله مثلِ سامانه
  نادیده گرفته می‌شوند.

= 0.4.0 =
* ✨ **بلوکِ گوتنبرگ و ابزارکِ المنتور.** فرم را از فهرست انتخاب کنید؛ پیش‌نمایش همان
  چیزی است که بازدیدکننده می‌بیند. کد کوتاه هم سرِ جایش است.
* ✨ **نمایش خودکار در …** (ال‌امضا ← فرم‌ها): بالا/پایینِ تسویهٔ ووکامرس (کلاسیک و بلوکی)،
  صفحهٔ «سفارش ثبت شد»، انتهای هر نوشته، انتهای یک برگه — بدونِ دست‌زدن به آن صفحه. فرم
  همیشه بیرونِ فرمِ سفارش قرار می‌گیرد تا ثبتِ سفارش هرگز به آن گره نخورد.
* ✨ **صفحهٔ جزئیاتِ پاسخ** با پیش‌نمایشِ عکس‌ها و امضا و دکمهٔ دانلودِ فایل‌ها. تا این نسخه
  فایل‌ها فقط با نوشتهٔ «[فایل پیوست]» دیده می‌شدند و هیچ راهی برای بازکردنشان از وردپرس نبود.
* ✨ **هر پاسخ همان لحظه فرستاده می‌شود**، نه فقط فرم‌های امضادار. تا این نسخه فرمِ بدونِ
  امضا منتظرِ صفِ وردپرس می‌ماند که فقط با بازدید اجرا می‌شود — روی سایتِ کم‌بازدید یعنی
  صبحِ فردا. ارسالِ فوری سقفِ زمانی دارد و اگر نرسید، صف مثلِ قبل کار را تمام می‌کند.
* ✨ **کارتِ «وضعیت ارسال»** در تنظیمات: صف مسلح است؟ چند پاسخ در صف است؟ آخرین اجرا کی
  بود؟ و نشانیِ `wp-cron.php` همین سایت برای زمان‌بندِ واقعی.
* ✨ **هشدارِ کیف پول پیش از شکست.** اگر فرمِ امضادار دارید و کیف پول خالی یا کم است، در
  پیشخوان، روی برگهٔ فرم‌ها و — فقط برای شما — روی خودِ فرم گفته می‌شود، با دکمهٔ شارژ.
  تا این نسخه اولین نشانه، قراردادِ ساخته‌نشده و پیامِ «با مدیر سایت تماس بگیرید» بود.
* ✨ **صفحهٔ «ظاهر»**: رنگ، گوشه‌ها، اندازه و شکلِ دکمه برای همهٔ فرم‌های سایت، با پیش‌نمایشِ
  زنده، بدونِ CSS. `accent=` روی کدِ کوتاه همچنان برای یک برگه برنده است.
* ✨ **فیلترِ پاسخ‌ها بر اساس هر فیلدِ تک‌انتخابی** (جنسیت، نوع همکاری، …) و **انتخابِ
  ستون‌های خروجیِ اکسل**. فیلترِ «فرم» هم که وجود داشت ولی هیچ‌وقت کشیده نشده بود، حالا هست.

= 0.3.1 =
* 🩸 **تاریخ و امضای نفرِ قبلی روی فرم می‌ماند.** بعد از هر ارسالِ موفق، فرم خالی می‌شد
  ولی تقویمِ شمسی و پدِ امضا مقدارشان را نگه می‌داشتند — چون هر دو مقدار را در یک ورودیِ
  پنهان می‌گذارند و پاک‌سازی عمداً از ورودی‌های پنهان رد می‌شد. یعنی نفرِ بعدی روی یک
  دستگاهِ مشترک، تاریخِ نفرِ قبلی را می‌دید و **امضای او هم همان‌جا بود**. حالا فقط
  مقدارهای «آینهٔ یک کنترل» پاک می‌شوند و برچسبِ دکمه هم دوباره کشیده می‌شود.
* 🩸 **پیامِ «ثبت شد» به دکمهٔ ارسال چسبیده بود.** حاشیهٔ پایینش صفر بود و دکمه هیچ
  حاشیه‌ای نداشت. حالا یک هشدارِ درست است، با نشانه، فاصله، و `aria-live` تا صفحه‌خوان
  هم اعلامش کند.
* 🩸 **تقویم و پنجرهٔ امضا استایلِ سایت را نمی‌گرفتند.** این پنجره بیرون از فرم ساخته
  می‌شود، پس متغیّرهای رنگِ فرم به آن ارث نمی‌رسید و همهٔ رنگ‌هایش ثابت بود. حالا رنگ،
  قلم و روشن/تاریک‌بودن از خودِ فرم خوانده و منتقل می‌شود.
* ✨ **`accent=` روی کدِ کوتاه:** رنگِ دکمهٔ ارسال (و تقویم و پنجرهٔ امضا) را بدونِ یک خط
  CSS عوض می‌کند. `class=` هم اضافه شد برای وقتی که CSS می‌خواهید.
* 🩸 **CSSِ خودتان بی‌اثر بود.** استایل‌نامهٔ افزونه در پایینِ صفحه بار می‌شد و «CSS اضافه»ی
  وردپرس در بالا — پس ما بی‌صدا رویتان را می‌گرفتیم. حالا وقتی صفحه کدِ کوتاه دارد، در
  بالای صفحه بار می‌شود.

= 0.3.0 =
* استعلام هویت (شاهکار و شخص حقوقی) حالا واقعاً در وردپرس کار می‌کند. تا این نسخه این فیلدها
  فقط یک کادرِ متنیِ ساده نشان می‌دادند و هیچ کلیدِ استعلامی نداشتند، و به همین دلیل هر فرمی
  که فیلدِ استعلامِ *اجباری* داشت اصلاً از وردپرس ثبت نمی‌شد.
* پنلِ مدیریت: برگه‌های «پاسخ‌ها»، «اعتبار» و «تنظیمات» طراحیِ خودشان را گرفتند. تا این نسخه
  فایلِ ظاهریِ افزونه فقط روی برگهٔ «فرم‌ها» بارگذاری می‌شد، و برای همین لوگو در سه برگهٔ دیگر
  بسیار بزرگ دیده می‌شد و آن برگه‌ها هیچ قالبی نداشتند.
* «پاسخ‌ها»: جست‌وجو، صفحه‌بندی و فیلترِ وضعیت اضافه شد. تا این نسخه پاسخِ بیست‌ویکم به بعد
  از هیچ راهی دیدنی نبود.
* «ارسال دوباره» برای پاسخ‌هایی که به سامانه نرسیده‌اند. تا این نسخه چنین پاسخی هیچ راهِ
  برگشتی نداشت، در حالی که پیامِ خودِ همان ردیف می‌گفت «دوباره بفرستید».
* اعتبارِ کم حالا خودش هشدار می‌دهد و پس از شارژ هشدار برداشته می‌شود.
* هشدارهای افزونه دکمهٔ «بستن» گرفتند. تا این نسخه بعضی هشدارها هرگز پاک نمی‌شدند و روی هر
  برگهٔ مدیریت می‌ماندند.
* تنظیمِ «با حذفِ افزونه، پاسخ‌ها هم پاک شوند» اضافه شد. تا این نسخه این تنظیم فقط در کد
  خوانده می‌شد و هیچ‌جا نوشته نمی‌شد.
* اصلاح: فایل‌هایی که هنوز به سامانه نرفته بودند، پس از یک شبانه‌روز پاک می‌شدند و ارسالشان
  برای همیشه شکست می‌خورد.
* اصلاح: بعضی نوع‌های فایل که سامانه می‌پذیرد (مثل docx و gif) در وردپرس رد می‌شدند.
* اصلاح: فرستادنِ فرم در حینِ بارگذاریِ فایل، فیلدِ فایل را «خالی» گزارش می‌کرد.
* اصلاح: عنوان، متن، جداکننده و کادرِ فرمول شرطِ نمایششان اعمال نمی‌شد و همیشه دیده می‌شدند.
* ایمنی: سقفِ تعداد بارگذاری و سقفِ تعداد استعلام برای هر بازدیدکننده اضافه شد؛ پیش از این
  هیچ‌کدام شمرده نمی‌شدند و یک نفر می‌توانست فضای سایت یا سهمیهٔ استعلامِ حساب را تمام کند.
* حذف: کلیدِ «بازگشت به نسخهٔ قبلی» برداشته شد چون کارِ ادعایی‌اش را انجام نمی‌داد. برای
  برگشت، نسخهٔ قبلی را از «افزونه‌ها ← افزودن ← بارگذاری افزونه» نصب کنید.

= 0.2.0 =
* توکنِ آزمایشی (Sandbox) حالا روی هر برگهٔ مدیریتِ وردپرس اعلام می‌شود، نه فقط در برگهٔ تنظیماتِ
  افزونه. یک سایتِ زنده هفت ساعت روی توکنِ آزمایشی کار کرد — فرم‌ها ثبت می‌شدند و هیچ پیامکی
  به هیچ امضاکننده‌ای نمی‌رفت — و هشدارِ موجود فقط در صفحه‌ای بود که کسی دوباره بازش نمی‌کند.
* امضا: کادر بازشو با دو حالتِ «ترسیم» و «بارگذاری تصویر»، پیش‌نمایشِ زنده، پاک‌کردن و
  امضای دوباره. پس‌زمینهٔ سفیدِ عکسِ امضا در خودِ مرورگر حذف می‌شود و نتیجه پیش از تأیید
  دیده می‌شود.
* تاریخ شمسی: انتخابگرِ سه‌ستونهٔ سال/ماه/روز با ارقامِ فارسی، پشتیبانی از صفحه‌کلید، و
  اسفندِ کبیسه. بازهٔ سالِ تعیین‌شده در فرم حالا واقعاً رعایت می‌شود.
* اصلاح: فرمی که «امضا» و «فایل» با هم داشت هرگز به سامانه نمی‌رسید.
* اصلاح: صفِ ارسال روی نصب‌های به‌روزرسانی‌شده مسلح نمی‌شد و پاسخ‌ها دیر می‌رفتند.
* اصلاح: نشانی به‌صورتِ ناقص فرستاده می‌شد و سامانه ردش می‌کرد.
* اصلاح: فیلدِ چندگزینه‌ایِ دست‌نخورده گزینهٔ اول را می‌فرستاد؛ تیکِ نخورده «نه» ثبت می‌شد؛
  عددِ نوشته‌شده با ارقامِ فارسی خالی می‌رفت؛ فیلدهای پنهان اصلاً فرستاده نمی‌شدند.
* اصلاح: فرم پس از ارسالِ موفق خالی می‌شود.
* اصلاح: صفحه دیگر اسکرولِ افقیِ اضافی نمی‌گیرد.
* ظاهر: حالت‌های تمرکز و خطا، شبکهٔ نشانی، و خوانایی روی قالب‌های تیره.

= 0.1.0 =
* نخستین انتشار: کد کوتاه، اعتبارسنجی، قواعدِ شرطی، صف و تلاشِ دوباره، هم‌گام‌سازیِ ساختار،
  بایگانیِ محلی با خروجی CSV، محافظت از هرزنامه، و مسیرِ امضای الکترونیکی.

== Upgrade Notice ==

= 0.5.1 =
اصلاح: فرمولی که به فیلدِ پنهان وابسته است به‌جای عددِ غلط، «پس از ارسال محاسبه می‌شود» نشان می‌دهد. هیچ تنظیمی عوض نمی‌شود.

= 0.5.0 =
فرم‌هایی که جدولِ ردیف‌دار دارند به‌جای نمایشِ ناقص، یک پیوندِ باز کردنِ فرم در ال‌امضا نشان می‌دهند.

= 0.4.1 =
اصلاح: فیلدهای محدودشده به تعدادِ کاراکتر، پاسخِ درستِ عددی (مثلِ شناسهٔ ملی) را پیش از ارسال
رد می‌کردند. هیچ تنظیمی عوض نمی‌شود.

= 0.4.0 =
نسخهٔ بزرگ: بلوکِ گوتنبرگ و ابزارکِ المنتور، «نمایش خودکار» (از جمله بالا/پایینِ تسویهٔ
ووکامرس)، صفحهٔ جزئیاتِ پاسخ با پیش‌نمایشِ عکس و امضا، ارسالِ فوریِ همهٔ فرم‌ها، کارتِ
«وضعیت ارسال»، هشدارِ کیف پول پیش از شکست، صفحهٔ «ظاهر» و فیلترِ فیلدی با انتخابِ ستونِ
خروجی. هیچ تنظیم یا پاسخی از بین نمی‌رود؛ کدهای کوتاهِ فعلی بدونِ تغییر کار می‌کنند.

= 0.3.1 =
به‌روزرسانیِ لازم برای هر فرمی که تقویم یا امضا دارد: تا این نسخه، بعد از هر ارسالِ موفق
تاریخ و **امضای نفرِ قبلی** روی فرم می‌ماند و نفرِ بعدی می‌توانست ناخواسته همان را بفرستد.
همچنین فاصلهٔ پیامِ تأیید با دکمهٔ ارسال درست شد، تقویم و پنجرهٔ امضا رنگ و قلمِ سایت را
می‌گیرند، با `accent=` می‌شود رنگِ دکمه را بدونِ CSS عوض کرد، و دکمهٔ «بررسی به‌روزرسانی»
اضافه شد.

= 0.3.0 =
به‌روزرسانیِ لازم برای هر سایتی که فرمِ «استعلام هویت» دارد: تا این نسخه چنین فرمی از وردپرس
ثبت نمی‌شد. همچنین فایل‌های هنوز نرفته دیگر پاک نمی‌شوند، پاسخ‌های نرسیده «ارسال دوباره»
دارند، و برگه‌های مدیریت ظاهرِ درستشان را گرفتند.

= 0.2.0 =
به‌روزرسانیِ لازم. سه ایراد که باعث می‌شد بخشی از پاسخ‌ها اصلاً به سامانه نرسد اصلاح شده،
امضا و تاریخِ تولد کنترلِ درست گرفته‌اند، و اگر توکنِ این سایت آزمایشی باشد از این نسخه به
بعد در همهٔ صفحه‌های مدیریت هشدار داده می‌شود.

= 0.1.0 =
نخستین انتشار.
