=== Sinox AI ===
Contributors: sinox
Tags: ai, seo, content, persian, rtl
Requires at least: 6.0
Tested up to: 7.1
Requires PHP: 7.4
Stable tag: 1.3.1
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

تولید محتوا و متای سئو با هوش مصنوعی از طریق سرویس Sinox — فارسی، راست‌به‌چپ و ساده. / AI content and SEO metadata for WordPress, powered by the Sinox API. Persian-first and fully RTL.

== Description ==

**فارسی**

Sinox AI افزونه‌ای رایگان و متن‌باز است که وردپرس شما را به سرویس هوش مصنوعی Sinox وصل می‌کند: نوشتن مقاله، پر کردن متای سئو و متن جایگزین تصاویر — همه با رابط فارسی و راست‌به‌چپ.

* راهنمای سه‌قدمی راه‌اندازی: چسباندن کلید و تست اتصال، سه سؤال کوتاه، و سه کار پیشنهادی برای شروع. وقتی راهنما تمام شد، «شروع» از منو می‌رود و محتوایش به تب‌های صفحه‌ی تنظیمات منتقل می‌شود؛ هر وقت خواستید «شروع مجدد راهنما» برش می‌گرداند.
* **تنظیمات تب‌بندی‌شده:** «اتصال»، «تولید»، «برند»، «سئو و کیفیت»، «پیشرفته» و — برای مدیر سایت — «دسترسی». هر تب یک فرم مستقل است، پس ذخیره‌ی یکی هیچ‌وقت تنظیم تب دیگر را پاک نمی‌کند.
* کلید API به‌صورت رمزنگاری‌شده ذخیره می‌شود و هرگز به جاوااسکریپت فرستاده نمی‌شود.
* سه پریست کیفیت (سریع / متعادل / حداکثر کیفیت) بدون نیاز به دانستن نام مدل‌ها.
* «تست اتصال» مشکل‌های شبکه‌ی هاست را تشخیص می‌دهد و متن آماده برای پشتیبانی هاست می‌دهد.
* اگر مبدأ اصلی در دسترس نباشد، به‌صورت خودکار به مبدأ جایگزین ایرانی سوییچ می‌کند.
* گزارش مصرف محلی: تعداد درخواست و توکن مصرف‌شده در ۳۰ روز گذشته.
* تولید مقاله (سرفصل → بخش‌به‌بخش → پیش‌نویس) و متای سئو، تکی یا دسته‌جمعی.
* **نمایش زنده‌ی نوشتن مقاله (استریم):** متن هر بخش همان‌طور که نوشته می‌شود روی صفحه می‌آید. اگر هاست شما خروجی را بافر کند، افزونه خودش تشخیص می‌دهد و بدون از دست رفتن پیشرفت به حالت مرحله‌به‌مرحله برمی‌گردد.
* **صف کارها:** هر تولید یک «کار» است که در دیتابیس ذخیره می‌شود؛ قابل لغو، قابل ادامه پس از خطا (تا ۳ تلاش با فاصله) و بدون تولید دوباره‌ی بخش‌های نوشته‌شده. صفحه‌ی «کارها» وضعیت، پیشرفت، لغو، تلاش دوباره و حذف را نشان می‌دهد و کارهای تمام‌شده بعد از ۷ روز خودکار پاک می‌شوند.
* **تولید انبوه:** فهرست موضوع‌ها (هر خط یک مقاله) یا فایل CSV تا ۵۰ ردیف، اجرای پشت‌سرهم (هرگز موازی) با جدول پیشرفت زنده، توقف/ادامه/لغو دسته و رد کردن خودکار عنوان‌های تکراری.
* نوشتن متا در رنک‌مث، یوآست یا All in One SEO — و اگر هیچ افزونه‌ی سئویی فعال نبود، در حافظه‌ی داخلی افزونه و خروجی `wp_head`.
* پیش‌فرض پست‌های تولیدشده «پیش‌نویس» است تا همیشه بازبینی انسانی انجام شود؛ نشان «بازبینی‌نشده» تا وقتی خودتان تأیید کنید.
* گزینه‌ی اختیاری «افشاگری هوش مصنوعی»: افزودن یک جمله به انتهای نوشته‌های تولیدشده (پیش‌فرض خاموش).
* متن جایگزین (alt) انبوه برای رسانه: صفحه‌ی «alt با Sinox» همه‌ی تصویرهای بدون alt را فهرست می‌کند، یک‌به‌یک و با نوار پیشرفت پر می‌کند، و در فهرست رسانه نشان می‌دهد کدام alt را Sinox نوشته است. متن‌های موجود فقط با تیک «بازنویسی» عوض می‌شوند.
* سایدبار «Sinox AI» در گوتنبرگ (و دکمه‌ی هم‌ارز در ویرایشگر کلاسیک): بازنویسی، بسط، خلاصه و تغییر لحن روی متن انتخاب‌شده، با پیش‌نمایش «قبل/بعد» و دکمه‌ی «جایگزین کن» (با Ctrl+Z برمی‌گردد).
* ویجت «اعتبار Sinox AI» در پیشخوان: پلن، باقی‌مانده با نوار، مصرف ۷ روز گذشته‌ی همین سایت، تخمین روز باقی‌مانده، دکمه‌ی شارژ و آخرین خطا؛ به‌اضافه‌ی هشدار خودکار وقتی کمتر از ۲۰٪ اعتبار مانده باشد (قابل بستن برای ۲۴ ساعت).
* باکس «مقایسه‌ی مدل‌ها» در تنظیمات: یک پرامپت، سه خروجی کنار هم با تأخیر و تعداد توکن، و دکمه‌ی «این را پیش‌فرض کن».
* پیام تبریک یک‌باره بعد از اولین مقاله، با پیشنهاد کار بعدی.
* «کلید ندارم — رایگان بگیرم» در قدم ۱ راهنما: اتصال یک‌کلیکی از طریق sinoxapi.com/connect؛ کلید سمت سرور تبادل و ذخیره می‌شود و هیچ‌وقت وارد جاوااسکریپت نمی‌شود.
* **ووکامرس:** جعبه‌ی «توضیحات با Sinox» در صفحه‌ی ویرایش محصول (توضیح کوتاه و بلند از روی نام، ویژگی‌ها، دسته و قیمت همان محصول) و کنش دسته‌جمعی «توضیحات با Sinox» در فهرست محصول‌ها که از صف کارها عبور می‌کند (یکی‌یکی، هرگز موازی). اگر ووکامرس فعال نباشد، هیچ قلابی ثبت نمی‌شود.
* **خروجی بلوکی:** مقاله‌ی تولیدشده به‌جای یک بلوک کلاسیک، با نشانه‌گذاری واقعی گوتنبرگ (عنوان، پاراگراف، فهرست، فهرست تودرتو) نوشته می‌شود، پس سایدبار Sinox روی همان بلوک‌ها کار می‌کند. اگر Classic Editor فعال باشد، همان HTML ساده نوشته می‌شود.
* **لینک داخلی هوشمند:** Sinox نوشته‌های منتشرشده‌ی سایت را نمایه می‌کند (عنوان، نامک، دسته و برچسب، و ۳۰۰ کلمه‌ی اول) و در ویرایشگر تا ۵ لینک داخلی پیشنهاد می‌دهد، با همان عبارتی که واقعاً در متن شما هست. «افزودن» لینک را فقط در اولین جای مناسب می‌گذارد — هرگز داخل عنوان‌ها، هرگز داخل لینک موجود و هرگز دو بار به یک مقصد. کنش گروهی «پیشنهاد لینک داخلی (Sinox)» در فهرست نوشته‌ها تا ۳ لینک به هر نوشته اضافه می‌کند و صفحه‌ی «لینک‌های داخلی» گزارش آن را نشان می‌دهد. این کار هیچ توکنی مصرف نمی‌کند: نمایه کاملاً محلی است. (اگر کلید شما «درخواستی» باشد، می‌توان بردار embedding را هم فعال کرد تا ترتیب پیشنهادها دقیق‌تر شود.)
* **ویراستاری فارسی (بدون توکن):** نیم‌فاصله‌ی «می/نمی» و «ها/تر/ترین» و ضمیرها، «ي» و «ك» عربی، «ة»، اعراب، رقم فارسی یا لاتین به انتخاب شما، علامت‌های «،» «؛» «؟»، فاصله‌ی پیش و پس از علائم، گیومه‌ی فارسی به‌جای "…" و سه‌نقطه‌ی «…» — همه به‌صورت محلی و قطعی. یا روی همه‌ی تولیدها اعمال می‌شود (پیش‌فرض روشن برای سایت فارسی) یا از صفحه‌ی «ویراستاری» روی نوشته‌های موجود: اول «پیش‌نمایش» تعداد و نمونه‌ی تغییرها را نشان می‌دهد، بعد «اعمال» متن را عوض می‌کند و نسخه‌ی قبلی را به‌عنوان «بازنگری» نگه می‌دارد تا برگشت‌پذیر بماند. تیترها، کدها، شورت‌کدها، نشانی‌ها و نشانه‌گذاری بلوک‌ها هیچ‌وقت دست نمی‌خورند.
* **بازبینی با Sinox:** روی هر نوشته — تولیدی یا نوشته‌ی خودتان — جعبه‌ی «بازبینی Sinox» در ویرایشگر (هم گوتنبرگ و هم کلاسیک) با یک فراخوانی یک گزارش ساخت‌یافته می‌سازد: امتیاز ۰ تا ۱۰۰، هشت بررسی (خوانایی، ساختار تیترها، پوشش کلیدواژه، طول، مقدمه، جمع‌بندی، نگارش فارسی، لینک داخلی) و فهرست ایرادها. هر ایراد «پیش‌نمایش» قبل/بعد دارد و «اعمال» فقط **اولین** نمونه‌ی همان متن را در ویرایشگر جایگزین می‌کند؛ اگر متن پیدا نشد چیزی دست نمی‌خورد و همین را می‌گوید. گزارش روی خود نوشته ذخیره می‌شود، پس باز کردن دوباره‌ی ویرایشگر هیچ توکنی خرج نمی‌کند و «بازبینی دوباره» آن را تازه می‌کند. ایرادهای نگارشی فارسی و پیشنهاد لینک داخلی همان گزارش از موتور محلی می‌آیند و هیچ توکنی خرج نمی‌کنند؛ «اعمال همه‌ی موارد امن» فقط همین اصلاح‌های مکانیکی را انجام می‌دهد و هیچ‌وقت داخل تیترها نمی‌رود.
* **بازبینی انبوه:** کنش گروهی «بازبینی با Sinox» در فهرست نوشته‌ها برای هر مورد یک کار در صف می‌سازد (یکی‌یکی، هرگز موازی) و صفحه‌ی «بازبینی» فهرست نوشته‌های بازبینی‌شده را با امتیاز و تاریخ نشان می‌دهد، با مرتب‌سازی بر اساس امتیاز و فیلتر «بازبینی‌های زیر ۶۰». ستون «Sinox امتیاز» در فهرست نوشته‌ها فقط وقتی گزارشی وجود دارد پر می‌شود. اگر سقف روزانه‌ی کلید پر شود، کل دسته متوقف می‌شود و دکمه‌ی «ادامه» آن را از همان‌جا ادامه می‌دهد.
* **ایده‌ی موضوع و عنوان:** صفحه‌ی «ایده‌ها» از توضیح سایت، دسته‌ها و برچسب‌ها، ۳۰ عنوان اخیر و کلیدواژه‌های سئوی آن‌ها (و دسته‌های ووکامرس) یک نمایه‌ی محلی می‌سازد و ۱۲ تا ۲۰ موضوع تازه پیشنهاد می‌دهد؛ هر کدام با کلیدواژه‌ی کانونی، زاویه (شکاف محتوا، ادامه‌ی سری، فصلی، همیشه‌سبز، محصول)، یک جمله دلیل و طول پیشنهادی — و با یک کلیک به «مقاله‌ی جدید» یا به صف تولید انبوه می‌رود. موضوعی که از قبل نوشته‌اید پیشنهاد نمی‌شود. برای نوشته‌های موجود هم جعبه‌ی «پیشنهاد عنوان (Sinox)» در ویرایشگر ۵ عنوان جایگزین و ۳ تیتر H2 می‌دهد.
* **تخمین هزینه و بازبینی سرفصل‌ها پیش از تولید:** کنار دکمه‌ی «تولید کن» نوشته می‌شود این مقاله تقریباً چند هزار توکن (و روی کلید ریکوستی چند ریکوست) خرج می‌کند، چقدر از کلید و از سقف امروز باقی مانده، و اگر تخمین از باقی‌مانده بیشتر باشد هشدار قرمز می‌گیرید. عدد از مصرف واقعی خود سایت شما یاد می‌گیرد. اگر مدل انتخاب‌شده «استدلالی» باشد، هشدار می‌دهد که هزینه‌ی واقعی می‌تواند ۲ تا ۴ برابر تخمین باشد. و پیش از نوشتن بخش‌ها، ساختار پیشنهادی را نشان می‌دهد: تیترها را عوض کنید، بخشی را حذف یا جابه‌جا کنید، تیک «بنویس» را بردارید و بعد «شروع نوشتن» را بزنید — همین در تولید انبوه هم با یک تیک در دسترس است. در پایان، مصرف واقعی کنار تخمین نشان داده می‌شود.
* **محتوای بیات:** صفحه‌ی «محتوای بیات» نوشته‌های منتشرشده‌ای را که بیش از N ماه (پیش‌فرض ۱۲) ویرایش نشده‌اند از قدیمی‌ترین می‌چیند، با تعداد کلمه، تاریخ آخرین ویرایش و سن. «بازنویسی» نسخه‌ی تازه را با تاریخ امروز و توضیح سایت می‌سازد و آن را به‌عنوان **پیش‌نویس جدید** ذخیره می‌کند؛ نسخه‌ی منتشرشده هرگز بازنویسی نمی‌شود. «مقایسه» دو نسخه را کنار هم نشان می‌دهد.
* **پیش‌نویس پاسخ به دیدگاه‌ها:** در فهرست دیدگاه‌ها، «پیش‌نویس پاسخ با Sinox» (تکی یا گروهی) یک پاسخ پیشنهادی به زبان خودِ دیدگاه می‌نویسد و در جعبه‌ای زیر همان دیدگاه نشان می‌دهد. **هیچ پاسخی خودکار منتشر نمی‌شود:** تا وقتی «تأیید و ارسال» را نزنید چیزی ثبت نمی‌شود، و دیدگاه‌های تأییدنشده، جفنگ و زباله‌دان اصلاً پاسخ نمی‌گیرند.
* **صدای برند:** تب «برند» در تنظیمات می‌گوید برای چه کسی و با چه صدایی بنویسیم — مخاطب، سه تا پنج صفت، یک پاراگراف توضیح، سطح رسمیت، واژه‌نامه‌ی اصطلاح‌های ثابت، فهرست واژه‌های ممنوع، دعوت به اقدام و یک نمونه‌ی متن «این‌طور بنویس». سایت چندموضوعی می‌تواند چند پروفایل داشته باشد و هر دسته را به یکی بسپارد. واژه‌نامه بعد از تولید هم روی متن اعمال می‌شود و واژه‌ی ممنوع در پنل نتیجه علامت می‌خورد (خودکار حذف نمی‌شود). متن دقیق پرامپت هر کار هم در تب «پیشرفته» قابل ویرایش، پیش‌نمایش و بازگردانی است.
* **اطلاع‌رسانی و گزارش ماهانه:** وقتی یک دسته‌کار تمام می‌شود، متوقف می‌شود یا کاملاً شکست می‌خورد، همان کسی که شروعش کرده یک اعلان در پیشخوان می‌بیند — با تعداد انجام‌شده/ردشده/ناموفق، پنج عنوان اول با لینک ویرایش، دلیل توقف و دکمه‌ی «ادامه» — و بستن اعلان برای همیشه است. ایمیل اختیاری است (خاموش، به شروع‌کننده، یا به یک نشانی ثابت) و هرگز برای مقاله‌ی تکی فرستاده نمی‌شود. تب تازه‌ی «گزارش» روی صفحه‌ی «مصرف» این ماه را با ماه قبل مقایسه می‌کند: مقاله، متا، alt، محصول، لینک، بازبینی، ویراستاری و پاسخ دیدگاه، مجموع توکن و میانه‌ی توکن هر مقاله، سهم هر کار از هزینه، پنج مدل پرمصرف، نمودار روزهای پرکار و روزهای باقی‌ماندهٔ اعتبار. ردیف‌های مصرف با فیلتر بازه/کار/وضعیت به CSV (با BOM، پس اکسل فارسی را درست نشان می‌دهد) و خود گزارش به JSON خروجی می‌گیرد.
* **دسترسی نقش‌ها و سقف روزانه:** تب «دسترسی» در تنظیمات یک جدول ساده است — کدام نقش می‌تواند «تولید» کند، «بهینه‌سازی» کند، «مصرف» را ببیند و «مدیریت» کند. برای هر نقش می‌توانید سقف روزانه‌ی توکن هم بگذارید (و برای یک کاربر خاص، سقف جداگانه در پروفایل خودش). صفحه‌ای که نقش کاربر اجازه‌اش را ندارد اصلاً در منو دیده نمی‌شود. مدیر سایت همیشه از همه‌ی این‌ها رد می‌شود.
* **به‌روزرسانی از پیشخوان وردپرس:** تا وقتی افزونه روی مخزن wordpress.org نیامده، به‌روزرسانی از یک فایل JSON عمومی روی sinoxapi.com اعلام می‌شود و مثل هر افزونه‌ی دیگری از صفحه‌ی «افزونه‌ها» نصب می‌شود. هیچ کلید یا داده‌ای از سایت شما فرستاده نمی‌شود، بسته فقط از sinoxapi.com پذیرفته می‌شود، و `DISALLOW_FILE_MODS` کل این مسیر را خاموش می‌کند.
* **تصویر شاخص:** فعلاً «به‌زودی» (مدل تصویر روی سرویس Sinox فعال نیست)، اما مسیر کد آماده است: با فیلتر `sinox_ai_image_provider` می‌توان سرویس تصویر دلخواه را وصل کرد. تا وقتی این فیلتر ثبت نشده، هیچ درخواستی برای تصویر فرستاده نمی‌شود.

**English**

Sinox AI is a free, open-source plugin that connects WordPress to the Sinox AI API for article drafting, SEO metadata and image alt text, with a Persian-first RTL admin UI. It also writes WooCommerce product descriptions (single and bulk), stores generated articles as real Gutenberg blocks, suggests internal links from a local keyword index (no tokens spent), lists stale posts and rewrites them into a new draft without touching the published one, and drafts comment replies that are never published until you approve them. Before you press Generate it tells you roughly what the article will cost in tokens (or requests, on a request-billed key), how much your key and today's cap have left, and warns you when a reasoning model would bill two to four times that. It can also stop after the outline so you can rename headings, drop or reorder sections and untick the ones you do not want, then start writing — and it shows what the article really cost next to what it promised. When a batch finishes, stops or fails, whoever started it gets one dashboard notice with the counts, the first five titles as edit links, the reason it stopped and a Resume button — plus, optionally, one e-mail. A monthly report tab compares this month with the last one, splits the cost by task and by model, and exports the usage log as CSV (with a BOM, so Excel reads Persian correctly) and the report as JSON. Four capabilities of its own — generate, optimize, view usage and manage — decide which roles see which screens, edited as a checkbox matrix on an «دسترسی» settings tab, and each role can be given a daily token budget (with a per-user override on the profile). Anyone who can administer the site passes every one of them, so no administrator loses access on upgrade.

== External services ==

این افزونه برای کار کردن به سرویس ابری Sinox وصل می‌شود. پیش از ثبت کلید API، تنها تماس شبکه‌ای افزونه بررسی نسخه‌ی جدید است (مورد ۷) که هیچ داده‌ای از سایت شما نمی‌فرستد؛ بقیه‌ی صفحه‌های افزونه بدون کلید هیچ درخواستی به بیرون نمی‌فرستند.

This plugin relies on the third-party Sinox AI service. Before you enter an API key the only request it makes is the plugin update check (item 7), which sends no data about your site.

**Service:** Sinox AI — https://sinoxapi.com
**Mirror used as automatic fallback:** https://sinox.babaii.ir

**Endpoints called and when:**

1. `POST https://sinoxapi.com/v1/chat/completions` — when you ask the plugin to generate or rewrite content (with `stream: true` when the live preview is used). Sent: the API key, the prompt built from your topic/keyword, the site description you typed in settings, the selected tone/language, and the selected model id.
2. `GET https://sinoxapi.com/v1/models` — when the settings page loads, on "Test connection", and at most once per 10 minutes. Sent: the API key.
3. `POST https://sinoxapi.com/api/key/status` — to show your plan and remaining credit, at most once per 5 minutes. Sent: the API key.
4. `https://sinoxapi.com/connect` — only when you click «کلید ندارم — رایگان بگیرم» in the setup wizard. Your browser (not the server) opens it with your site host, a return URL on your own site and a random one-time `state`. No API key exists yet at that point.
5. `POST https://sinoxapi.com/api/connect/exchange` — once, server-side, when that page sends you back. Sent: the one-time connection token and your site host. Returns the new domain-scoped API key, which is stored encrypted. The token is never exposed to JavaScript.
6. `POST https://sinoxapi.com/v1/embeddings` — only for internal-link suggestions, when the «لینک داخلی با embeddings» setting allows it (the default, «خودکار», enables it whenever a key is present; both request- and token-billed keys are accepted and a call costs one tenth of a text call). Sent: the API key and the title plus the first ~300 words of the post being indexed. A refusal switches it off for a day. Internal linking works without it, from a purely local keyword index.
7. `GET https://sinoxapi.com/wp/updates.json` — the plugin update channel, because this plugin is not on wordpress.org yet. Requested when WordPress refreshes its list of plugin updates (twice a day at most), whenever you open the «پیشرفته» settings tab so the update card can say which version you are on, and whenever you press «بررسی دوباره» there; the answer is cached for 12 hours, so opening that tab again inside the cache window sends nothing. **No API key and no site data are sent** — only the `User-Agent` described below. The answer is a public JSON file with the latest version number, the download URL, the changelog and the plugin banner. If it says a newer version exists, WordPress offers the update as usual and downloads the zip from `https://sinoxapi.com/downloads/`; a package announced from any other domain is refused. This is also what the "View details" window on the plugins screen shows. Set the constant `DISALLOW_FILE_MODS` (or filter `sinox_ai_update_manifest_url`) to switch the channel off or point it elsewhere.
8. Plain links only, never fetched by the plugin: `https://sinoxapi.com/register?ref=wp-plugin`, `https://sinoxapi.com/dashboard#plans` and `https://sinoxapi.com/docs#wordpress` are rendered as ordinary `<a href>` links in the admin. Nothing is requested until you click one, and clicking one opens it in your own browser.

That is the complete list. `GET /v1/models` is also what the "Test connection" health check uses (against the main origin first and the mirror second); there is no separate health endpoint.

Every request also carries an `X-Sinox-Site` header with your site host (required by domain-scoped Sinox keys) and a `User-Agent` of the form `SinoxAI-WP/1.3.0; example.com`.

The plugin never sends your post content, user data, or visitor data anywhere unless you explicitly start a generation action that includes that text.

**No other service is contacted.** The plugin loads no remote script, no remote stylesheet, no font and no image from a third party; every asset it uses ships inside the plugin folder.

**No telemetry, none at all.** The plugin collects no statistics, sends no usage report, no crash report and no "phone home" ping — not even an anonymous or opt-in one. The usage numbers you see on the «مصرف» screen are counted locally in your own database (`{prefix}sinox_usage`) and never leave your site.

**No minified sources.** The plugin ships no minified, compiled, obfuscated or bundled file: every `.js` and `.css` file in `assets/` is the human-readable original, written by hand, and there is no build step of any kind.

Terms of service: https://sinoxapi.com/terms
Privacy policy: https://sinoxapi.com/privacy

== Security note ==

The API key is stored encrypted (AES-256-CBC) with a key derived from your WordPress salts (`AUTH_KEY`, `SECURE_AUTH_KEY`, `LOGGED_IN_SALT`). This protects against database-only leaks such as a stolen SQL backup. It is **obfuscation at rest, not perfect secrecy**: an attacker who obtains both the database and `wp-config.php` can recover the key. For extra safety, use a domain-scoped plugin key with a daily limit from your Sinox dashboard.

== Installation ==

1. افزونه را نصب و فعال کنید. بار اول به‌صورت خودکار به «Sinox AI › شروع» می‌روید.
2. کلید API خود را بچسبانید (یا با «کلید ندارم، ثبت‌نام رایگان» یکی بگیرید) و «تست اتصال» را بزنید.
3. به سه سؤال کوتاه پاسخ دهید: موضوع سایت، لحن و زبان.
4. یکی از سه کار پیشنهادی را شروع کنید. هر وقت خواستید، از «Sinox AI › تنظیمات» با «شروع مجدد راهنما» دوباره به این راهنما برگردید.

== Frequently Asked Questions ==

= آیا افزونه رایگان است؟ =
بله، افزونه کاملاً رایگان و متن‌باز (GPLv2+) است. فقط برای استفاده از هوش مصنوعی به یک کلید API از sinoxapi.com نیاز دارید.

= هاست من به sinoxapi.com دسترسی ندارد =
دکمه‌ی «تست اتصال» را بزنید؛ افزونه به‌صورت خودکار مبدأ جایگزین را امتحان می‌کند و اگر باز هم نشد، متن آماده‌ای برای ارسال به پشتیبانی هاست به شما می‌دهد.

= محتوا مستقیم منتشر می‌شود؟ =
خیر. وضعیت پیش‌فرض «پیش‌نویس» است و می‌توانید آن را در تنظیمات تغییر دهید.

== Screenshots ==

1. صفحه‌ی تنظیمات، تب «اتصال»: کلید ماسک‌شده، تست اتصال و مبدأ در حال استفاده — به‌اضافه‌ی شش تب «اتصال»، «تولید»، «برند»، «سئو و کیفیت»، «پیشرفته» و «دسترسی». / The settings screen, Connection tab: the masked API key, the connection test and the origin in use, with the six tabs (Connection, Generation, Brand, SEO & quality, Advanced and Access).
2. «مقاله‌ی جدید» با جعبه‌ی تخمین هزینه کنار دکمه‌ی «تولید کن»: تخمین توکن، باقی‌مانده‌ی کلید و سقف امروز، و پیش‌نمایش سرفصل‌ها پیش از نوشتن. / The new-article screen with the live cost estimate next to the Generate button — estimated tokens, what the key and today's cap have left — and the outline preview you can edit before the sections are written.
3. صفحه‌ی «ایده‌ها»: ۱۲ تا ۲۰ موضوع تازه با کلیدواژه‌ی کانونی، زاویه و دلیل، هرکدام یک کلیک تا «مقاله‌ی جدید» یا صف تولید انبوه. / The Ideas screen: twelve to twenty fresh topics with a focus keyword, an angle and a one-line reason, each one click away from a new article or the bulk queue.
4. صفحه‌ی «بازبینی»: امتیاز، تعداد ایراد و تاریخ هر نوشته‌ی بازبینی‌شده، با مرتب‌سازی بر امتیاز و فیلتر «زیر ۶۰». / The Review screen: score, issue count and date for every reviewed post, sortable by score with a "below 60" filter.
5. صفحه‌ی «ویراستاری»: پیش‌نمایش اصلاح‌های نگارشی فارسی («قبل ⇦ بعد») پیش از اعمال، بدون مصرف توکن. / The Persian copy-editing screen: a before/after preview of every fix, with no tokens spent.
6. سایدبار Sinox AI در گوتنبرگ: بازنویسی، بسط، خلاصه و تغییر لحن روی متن انتخاب‌شده، با پیش‌نمایش «قبل/بعد». / The Sinox AI sidebar in the block editor: rewrite, expand, summarise and change the tone of the selected text, with a before/after preview.
7. صفحه‌ی «کارها»: وضعیت هر کار در صف، لغو، تلاش دوباره، حذف و بازبینی سرفصل. / The jobs screen: the status of every queued job, with cancel, retry, delete and "review the outline".
8. صفحه‌ی «مصرف»، تب «گزارش»: این ماه در برابر ماه گذشته، سهم هر کار از هزینه، پنج مدل پرمصرف و خروجی CSV/JSON. / The usage screen's Report tab: this month against last month, cost split by task, the five heaviest models, and the CSV/JSON exports.
9. تب «دسترسی»: جدول نقش‌ها در برابر چهار دسترسی افزونه، و سقف روزانه‌ی توکن هر نقش. / The Access tab: a role-by-capability matrix for the plugin's four capabilities, plus a daily token budget per role.

== Changelog ==

= 1.3.1 =
* **embeddings برای همه‌ی کلیدها:** سرویس Sinox حالا embeddings را با کلید توکنی هم می‌پذیرد و یک‌دهم یک فراخوانی متنی حساب می‌کند. حالت «خودکار» لینک داخلی دیگر به نوع کلید نگاه نمی‌کند و هر وقت کلید هست از embeddings استفاده می‌کند؛ سایت‌هایی که با اتصال یک‌کلیکی (کلید توکنی) وصل شده‌اند از این نسخه پیشنهادهای دقیق‌تر می‌گیرند.
* **متن‌های تنظیمات و راهنما** برای همین تغییر به‌روز شد.

= 1.3.0 =
* **پیشنهاد موضوع و عنوان (۶.۲):** صفحه‌ی تازه‌ی «ایده‌ها». افزونه اول یک «نمایه‌ی سایت» کاملاً محلی می‌سازد — توضیح سایت، لحن، دسته‌ها با تعداد نوشته، برچسب‌ها، ۳۰ عنوان اخیر با کلیدواژه‌ی کانونی‌شان (از رنک‌مث/یوآست/All in One SEO و در نبودشان از نمایه‌ی لینک داخلی) و دسته‌های ووکامرس اگر فعال باشد — که یک روز کش می‌شود و دکمه‌ی «بازسازی نمایه» دارد و **هیچ توکنی مصرف نمی‌کند**. بعد با یک فراخوانی، ۱۲ تا ۲۰ ایده می‌گیرد: عنوان، کلیدواژه‌ی کانونی، زاویه (شکاف محتوا / ادامه‌ی سری / فصلی / همیشه‌سبز / محصول)، یک جمله دلیل و طول پیشنهادی. ایده‌ی تکراری کنار گذاشته می‌شود — چه عنوانش با نوشته‌ای که دارید یکی باشد (بی‌اعتنا به فاصله، «ی/ي» و عدد فارسی) و چه کلیدواژه‌اش از قبل داخل عنوان یک نوشته باشد — و ایده‌ای که بعداً نوشتیدش خودش از فهرست می‌رود.
* **هر ایده یک کلیک تا مقاله:** «نوشتن مقاله» صفحه‌ی مقاله‌ی جدید را با موضوع، کلیدواژه و طول پرشده باز می‌کند؛ «افزودن به صف انبوه» یک کار در صف می‌سازد؛ و با تیک‌زدن چند ایده، همه‌ی آن‌ها در **یک دسته** به صف می‌روند. «رد کردن» ایده را برای همیشه پنهان می‌کند، «ایده‌های بیشتر» بدون تکرار به فهرست اضافه می‌کند و فیلتر زاویه فهرست را کوتاه می‌کند. هزینه‌ی تقریبی هر اجرا روی صفحه نوشته شده و بعد از هر اجرا مصرف واقعی همان اجرا نشان داده می‌شود.
* **پیشنهاد عنوان برای نوشته‌های موجود:** جعبه‌ی «پیشنهاد عنوان (Sinox)» در ویرایشگر (هم گوتنبرگ، در ستون کناری سند، و هم کلاسیک) از روی متن همان نوشته ۵ عنوان جایگزین و ۳ پیشنهاد تیتر H2 می‌دهد. «استفاده» عنوان را در ویرایشگر جایگزین می‌کند (تا «ذخیره» نزنید چیزی ذخیره نمی‌شود) و تیترهای H2 با یک کلیک کپی می‌شوند.
* **ایده‌های خراب حذف می‌شوند:** اگر سرویس عنوان یا کلیدواژه‌ای با نویسه‌ی خراب (U+FFFD) برگرداند، آن ایده ذخیره نمی‌شود و پیام «۱ ایده به‌دلیل خطای متن حذف شد» می‌آید.
* ایده‌ها روی مدل «متعادل» سقف می‌خورند (پریست «حداکثر کیفیت» برای فهرست عنوان هزینه‌ی اضافه دارد) و «پیشنهاد عنوان» مثل بقیه‌ی کارهای سبک روی مدل سریع اجرا می‌شود.
* **شفافیت هزینه پیش از تولید (۶.۴):** روی صفحه‌ی «مقاله‌ی جدید» و «تولید انبوه» یک جعبه‌ی تخمین زنده اضافه شد که با تغییر طول مقاله و مدل بی‌درنگ به‌روز می‌شود: «≈ N هزار توکن» و روی کلید ریکوستی «≈ M ریکوست» (یک فراخوانی برای سرفصل‌ها — متای سئو داخل همان است — به‌اضافه‌ی یکی برای هر بخش). کنارش باقی‌مانده‌ی کلید و باقی‌مانده‌ی سقف امروز نوشته می‌شود و اگر تخمین از یکی از این دو بیشتر باشد جعبه قرمز می‌شود و می‌گوید کار نیمه‌کاره متوقف خواهد شد. همه‌ی عددها با رقم فارسی.
* **تخمین از روی مصرف واقعی خودتان:** پایه‌ی عدد، میانه‌ی مصرف ۲۴ مقاله‌ی آخر همان طول و همان مدل روی همین سایت است (اگر دست‌کم ۳ نمونه باشد؛ وگرنه میانه‌ی همان پریست، وگرنه عددهای پیش‌فرض کوتاه ۶ هزار / متوسط ۱۲ هزار / بلند ۲۰ هزار با ضریب کلاس مدل). جعبه خودش می‌گوید عدد از کدام‌یک آمده. در پایان تولید، «مصرف واقعی X توکن — تخمین Y توکن · اختلاف ±Z٪» نشان داده می‌شود و همان اندازه‌گیری به حافظه‌ی تخمین اضافه می‌شود، پس دفعه‌ی بعد دقیق‌تر است.
* **هشدار مدل استدلالی:** `Sinox_Router::is_reasoning()` مدل‌های `deepseek-v4*`، `claude-*-thinking`، `gpt-5.3-codex*` و هر شناسه‌ای با «thinking»، «reason» یا «r1» را می‌شناسد و در صفحه‌ی مقاله، صفحه‌ی تولید انبوه و تب «تولید» تنظیمات هشدار می‌دهد: «این مدل توکن‌های استدلال را هم حساب می‌کند؛ هزینه‌ی واقعی ممکن است ۲ تا ۴ برابر تخمین باشد» با لینک تغییر پریست. با فیلترهای `sinox_ai_reasoning_patterns` و `sinox_ai_is_reasoning` قابل تغییر است.
* **پیش‌نمایش و ویرایش سرفصل‌ها (پیش‌فرض روشن):** گزینه‌ی تازه‌ی «پیش‌نمایش سرفصل‌ها قبل از نوشتن». با آن، «تولید کن» فقط مرحله‌ی سرفصل را اجرا می‌کند و کار در وضعیت تازه‌ی `outline_review` منتظر شما می‌ماند: عنوان مقاله، عنوان و توضیح سئو، و فهرست بخش‌ها با تیتر و سرفصل‌های قابل ویرایش، دکمه‌های بالا/پایین، حذف بخش، افزودن بخش و تیک «بنویس» برای هر بخش (بخش بدون تیک اصلاً نوشته نمی‌شود). تخمین هزینه همان‌جا با تعداد بخش‌های انتخابی به‌روز می‌شود. «شروع نوشتن» کار را با همان ساختار ویرایش‌شده ادامه می‌دهد — چه در حالت استریم و چه مرحله‌به‌مرحله — و «انصراف» کار را لغو می‌کند بی‌آنکه پستی ساخته شود.
* **بازبینی سرفصل در تولید انبوه:** با تیک «سرفصل هر مقاله را پیش از نوشتن ببینم»، هر ردیف دسته بعد از ساخت سرفصل‌ها منتظر می‌ماند و در جدول دسته و صفحه‌ی «کارها» دکمه‌ی «بازبینی سرفصل» می‌گیرد؛ بعد از تأیید، ردیف به صف برمی‌گردد و در پس‌زمینه نوشته می‌شود. بدون تیک، دسته مثل قبل بدون توقف اجرا می‌شود. جدول دسته حالا ستون «تخمین» برای هر ردیف و تخمین کل دسته را هم نشان می‌دهد.
* **کار منتظر بازبینی «رهاشده» حساب نمی‌شود:** بازیابی کارهای متوقف فقط ردیف‌های `running` را می‌بیند، پس کاری که منتظر آدم است هرگز دوباره به صف نمی‌رود و با «تلاش دوباره» هم جابه‌جا نمی‌شود؛ ولی مثل کارهای تمام‌شده بعد از ۷ روز پاک می‌شود.
* **بازبینی هوشمند محتوا (۶.۳):** «بازبینی با Sinox» روی هر نوشته‌ای — نه فقط نوشته‌های تولیدشده. یک فراخوانی (پریست متعادل، JSON سخت‌گیرانه، سقف ۱۵۰۰ توکن) عنوان، متن ساده‌ی نوشته (تا ۶۰۰۰ کلمه، بیشتر از آن با یادداشت بریده می‌شود)، فهرست تیترهای موجود، کلیدواژه‌ی کانونی (از پل سئو) و توضیح سایت را می‌فرستد و یک گزارش JSON برمی‌گرداند: امتیاز ۰ تا ۱۰۰، یک جمله خلاصه، هشت بررسی امتیازدار و فهرست ایرادها با نوع، شدت، بریده‌ی عین متن و پیشنهاد جایگزین.
* **گزارش ذخیره می‌شود:** در متای `_sinox_review` (به‌اضافه‌ی `_sinox_review_at` و `_sinox_review_score`)، پس باز کردن دوباره‌ی ویرایشگر آخرین گزارش را **بدون هیچ فراخوانی** نشان می‌دهد و فقط «بازبینی دوباره» هزینه دارد.
* **اعمال تک‌تک پیشنهادها:** هر ایراد «پیش‌نمایش» قبل/بعد دارد (همان دیالوگ و همان استایل سایدبار بازنویسی) و «اعمال» فقط **اولین** نمونه‌ی دقیق همان بریده را جایگزین می‌کند — در گوتنبرگ داخل همان بلوکی که آن را دارد و در کلاسیک داخل TinyMCE یا فیلد متن. اگر بریده پیدا نشد، هیچ چیزی دست نمی‌خورد و همین به کاربر گفته می‌شود. اصلاح‌های نگارشی هرگز داخل تیتر اعمال نمی‌شوند و پیشنهاد لینک هرگز داخل لینک موجود نمی‌رود. تا زدن «ذخیره»، هیچ تغییری در دیتابیس نوشته نمی‌شود.
* **لینک داخلی در گزارش:** پیشنهادهای لینک از `Sinox_Links::suggest()` (نمایه‌ی محلی ۴.۱) می‌آیند و هیچ توکنی مصرف نمی‌کنند.
* **بازبینی انبوه با صف:** کنش گروهی «بازبینی با Sinox» در فهرست نوشته‌ها و برگه‌ها یک کار از نوع `review` برای هر مورد می‌سازد (از راه قرارداد `sinox_ai_run_job`، همه در یک دسته)؛ دسترسی `edit_post` برای تک‌تک موردها بررسی می‌شود. اگر سقف روزانه‌ی کلید پر شود یا اعتبار تمام شود، کل دسته مثل تولید انبوه متوقف می‌شود و دکمه‌ی «ادامه» آن را ادامه می‌دهد.
* **صفحه‌ی «بازبینی»:** فهرست نوشته‌های بازبینی‌شده با امتیاز، تعداد ایراد و تاریخ، مرتب‌سازی صعودی/نزولی بر اساس امتیاز، فیلتر «بازبینی‌های زیر ۶۰» و دکمه‌ی «باز کردن». ستون «Sinox امتیاز» در فهرست نوشته‌ها فقط وقتی گزارشی وجود داشته باشد عددی نشان می‌دهد.
* **ویراستاری فارسی خودکار (۶.۷):** یک ویراستار قطعی و کاملاً محلی. نیم‌فاصله‌ی «می» و «نمی»، «ها/های/هایش…»، «تر/ترین» و ضمیرهای «ام/ات/اش/ایم/اید/اند» (فقط بعد از واژه‌ای که به «ه/ی/ا/و» ختم شود)، تبدیل «ي»، «ك»، «ى» و «ة» عربی، حذف اختیاری اعراب، رقم فارسی یا لاتین به انتخاب شما، «،» و «؛» و «؟» در جمله‌ی فارسی، حذف فاصله‌ی پیش از علامت و یک فاصله پس از آن، جمع‌کردن فاصله‌های تکراری، فاصله‌ی پرانتزها، گیومه‌ی فارسی به‌جای "…" و سه‌نقطه‌ی «…». هیچ توکنی خرج نمی‌شود.
* **گارد در برابر اصلاح‌های اشتباه:** «میدان»، «تراس» و «هامون» دست‌نخورده می‌مانند (پسوند باید یک واژه‌ی کامل باشد)، «آب تر» تر می‌ماند (پیش از «تر» دست‌کم سه حرف لازم است)، «برادر اش» به هم نمی‌چسبد، «می» به‌معنای شراب فهرست استثنا دارد، «1,000» و «3.5» و «12:30» و «WP7» و «v1.2» همان‌طور می‌مانند و جمله‌ی انگلیسی اصلاً دست نمی‌خورد.
* **هیچ‌وقت داخل تیتر، کد یا نشانی:** محدوده‌های ممنوع همان محدوده‌های اسکن ۶.۳ است — تگ‌ها و ویژگی‌هایشان، نشانه‌گذاری بلوک گوتنبرگ، شورت‌کدها، `code`/`pre`/`script`/`style`/`figcaption` و همه‌ی تیترها — به‌اضافه‌ی نشانی‌های اینترنتی، ایمیل‌ها و entityهای HTML. اگر تگی بسته نشده باشد، کل دنباله‌ی متن دست‌نخورده می‌ماند.
* **اجرای دوباره هیچ تغییری نمی‌دهد:** همه‌ی قاعده‌ها نقطه‌ی ثابت‌اند و هر نمونه‌ی تست دو بار اجرا و مقایسه می‌شود (۷۵ ادعا در `tests/test-typography.php`).
* **روی همه‌ی تولیدها (پیش‌فرض روشن برای سایت فارسی):** متن مقاله، بازنویسی محتوای بیات، توضیح کوتاه و بلند محصول، عنوان و توضیح سئو، متن جایگزین تصویر، پیش‌نویس پاسخ دیدگاه، عنوان ایده‌ها و پیشنهاد عنوان، و خروجی سایدبار ویرایشگر. تعداد اصلاح‌ها در پنل نتیجه نوشته می‌شود: «۱۲ اصلاح نگارشی».
* **صفحه‌ی «ویراستاری» برای نوشته‌های موجود:** فیلتر دسته، بازه‌ی تاریخ و «فقط ویراستاری‌نشده‌ها»؛ «پیش‌نمایش» تعداد اصلاح‌های هر نوشته و پنج نمونه‌ی «قبل ⇦ بعد» را بدون هیچ هزینه‌ای نشان می‌دهد و «اعمال» کارها را از صف عبور می‌دهد (نوع `typography`، یکی‌یکی). پیش از هر تغییر `wp_save_post_revision()` صدا زده می‌شود، پس نسخه‌ی قبلی در «بازنگری‌های» همان نوشته می‌ماند و برگشت‌پذیر است. تاریخ و تعداد در متای `_sinox_typography_at` و `_sinox_typography_count` ثبت می‌شود و کنش «ویراستاری» کنار هر نوشته در فهرست، همان صفحه را با همان نوشته باز می‌کند.
* **بازبینی و ویراستاری یک موتور دارند:** ایرادهای نگارشی گزارش ۶.۳ حالا از همین موتور می‌آیند، پس «اعمال همه‌ی موارد امن» در ویرایشگر و دکمه‌ی «اعمال» این صفحه دقیقاً یک نتیجه می‌دهند.
* برای توسعه‌دهنده‌ها: `Sinox_Typography::fix( $html, $opts )` آرایه‌ی `{html, changes[]}` برمی‌گرداند (هر تغییر با `type`، `rule`، `before`، `after` و `offset` روی متن اصلی)، `maybe_fix_text()` برای رشته‌های کوتاه است، فیلترهای تازه `sinox_ai_typography_options`، `sinox_ai_typography_auto` و `sinox_ai_typography_post_types` و اکشن `sinox_ai_typography_applied`. سه تنظیم تازه داخل `sinox_ai_settings`: `typo_enabled`، `typo_rules` و `typo_digits`.
* **صدای برند و قالب‌های پرامپت (۶.۶):** به‌جای فقط «توضیح سایت»، تب تازه‌ی «برند» در تنظیمات: پروفایل برند با مخاطب، صدای برند (سه تا پنج صفت + یک پاراگراف)، سطح رسمیت، اصطلاح‌های ثابت (واژه‌نامه: شکل نادرست ⇦ شکل درست، هر خط یکی)، واژه‌های ممنوع، دعوت به اقدام پیش‌فرض و نمونه‌ی متن تا ۱۵۰۰ نویسه («این‌طور بنویس»). این پروفایل به شکل یک بلوک به پرامپت همه‌ی کارها اضافه می‌شود.
* **چند پروفایل برای سایت‌های چندموضوعی:** می‌توانید چند پروفایل بسازید، یکی را پیش‌فرض کنید و هر دسته را به یکی از آن‌ها بسپارید؛ مقاله با پروفایلِ دسته‌ی خودش نوشته می‌شود و صفحه‌ی «مقاله‌ی جدید» همان‌جا می‌گوید با کدام پروفایل نوشته خواهد شد و با عوض‌کردن دسته به‌روز می‌شود.
* **واژه‌نامه بعد از تولید هم اعمال می‌شود:** شکل‌های نادرستِ فهرست‌شده در متن آماده هم با شکل درست جایگزین می‌شوند — بیرون از `<code>`، `<pre>`، لینک‌ها و خود تگ‌ها — پس اگر مدل هم فراموش کند، متن درست می‌ماند. هیچ توکنی خرج نمی‌شود.
* **واژه‌های ممنوع فقط علامت می‌خورند:** اگر واژه‌ای از فهرست ممنوع باز هم در خروجی بیاید، در پنل نتیجه با تعداد و یک تکه از متن نشان داده می‌شود و **خودکار حذف نمی‌شود** — تصمیم با شماست.
* **ویرایشگر قالب‌های پرامپت (تب «پیشرفته»):** متن دقیقی که برای هر کار به مدل فرستاده می‌شود قابل ویرایش شد — ۱۶ قالب و ۱۹ نسخه (مقاله‌ی فارسی/انگلیسی، متا، محصول، دیدگاه، بازنویسی بیات، چهار کنش سایدبار، alt، ایده‌ها، پیشنهاد عنوان و بازبینی). هر قالب پیش‌فرض خودش را نشان می‌دهد، چیپ متغیرها دارد، «پیش‌نمایش با مقدار نمونه» (کاملاً محلی، بدون توکن) و «بازگردانی به پیش‌فرض». اگر متغیر ضروری را حذف کنید (مثلاً `{topic}` از قالب سرفصل مقاله) ذخیره رد می‌شود.
* **خروجی و ورودی JSON:** همه‌ی قالب‌های سفارشی به‌اضافه‌ی پروفایل‌های برند و نگاشت دسته‌ها در یک فایل JSON دانلود می‌شوند و روی سایت دیگری وارد می‌شوند.
* **خروجی قبلی تغییر نمی‌کند:** تا وقتی هیچ پروفایل و هیچ قالب سفارشی نسازید، پرامپت‌ها بایت‌به‌بایت همان چیزی هستند که در ۱.۲.۱ بودند (با هش گرفتن از ۱۸ پرامپت ساخته‌شده پیش و پس از این تغییر بررسی شد).
* برای توسعه‌دهنده‌ها: فیلتر تازه‌ی `sinox_ai_prompt` روی هر پرامپت ساخته‌شده، `sinox_ai_prompt_templates` روی فهرست قالب‌ها، `sinox_ai_brand_profile` روی پروفایلِ انتخاب‌شده برای یک دسته و `sinox_ai_brand_block` روی متن بلوک برند. دو آپشن تازه: `sinox_ai_brand` و `sinox_ai_prompts`.
* **دسترسی نقش‌ها (۶.۹):** چهار دسترسی تازه‌ی مخصوص افزونه — «تولید» (مقاله، تولید انبوه، ایده‌ها، توضیح محصول، بازنویسی محتوای بیات)، «بهینه‌سازی» (متای سئو، متن جایگزین تصویر، لینک داخلی، بازبینی، ویراستاری، بازنویسی در ویرایشگر، پیش‌نویس پاسخ دیدگاه)، «دیدن مصرف» و «مدیریت» — با یک جدول تیک‌خور در تب تازه‌ی «دسترسی». پیش‌فرض: مدیر همه‌چیز، ویرایشگر تولید و بهینه‌سازی و دیدن مصرف، نویسنده تولید و بهینه‌سازی، مشارکت‌کننده فقط بهینه‌سازی، مشترک هیچ‌کدام. صفحه‌ای که نقش شما اجازه‌اش را ندارد در منو هم نمی‌آید و باز کردن مستقیم نشانی‌اش ۴۰۳ می‌گیرد. دکمه‌ی «بازگردانی پیش‌فرض» همیشه هست.
* **مدیر سایت هیچ‌وقت قفل نمی‌شود:** هر کسی که `manage_options` دارد از همه‌ی این چهار دسترسی رد می‌شود، حتی اگر همه‌ی تیک‌های ردیفش برداشته شده باشد — پس به‌روزرسانی به این نسخه از هیچ مدیری چیزی نمی‌گیرد. دسترسی به تک‌تک نوشته‌ها، دیدگاه‌ها و تصویرها هم مثل قبل با اجازه‌های خود وردپرس سنجیده می‌شود.
* **سقف روزانه‌ی توکن برای هر نقش:** برای هر نقش می‌توانید بگویید کاربرانش روزی چند توکن از اعتبار سایت خرج کنند (۰ یعنی بدون سقف). پیش از هر فراخوانی مدل بررسی می‌شود و اگر پر شده باشد پیام فارسی «سقف روزانه‌ی نقش شما پر شده (X از Y)» می‌آید؛ یک دسته‌کار هم دقیقاً مثل سقف روزانه‌ی کلید با همین دلیل متوقف می‌شود و «ادامه» فردا آن را از همان‌جا برمی‌دارد. اگر سقف پر باشد، «مقاله‌ی جدید» و «تولید انبوه» همان لحظه و پیش از ساختن کار جواب رد می‌دهند. در صفحه‌ی «مقاله‌ی جدید» و ویجت پیشخوان خط «امروز: X از Y توکن» را می‌بینید، و در پروفایل هر کاربر می‌شود سقف جداگانه گذاشت. مدیر سایت هیچ‌وقت محدود نمی‌شود.
* **مصرف به نام صاحبش نوشته می‌شود:** جدول مصرف محلی ستون `user_id` گرفت و هر ردیف به کسی که کار را شروع کرده نسبت داده می‌شود — حتی وقتی کار در صف و بدون کاربر واردشده اجرا می‌شود. ردیف‌های قدیمی بدون مالک (NULL) می‌مانند و به حساب هیچ‌کس گذاشته نمی‌شوند.
* **اطلاع‌رسانی پایان دسته‌کار (۶.۸):** هر دسته‌کار — تولید انبوه، متای سئوی انبوه، alt انبوه، لینک داخلی انبوه، بازبینی انبوه، ویراستاری انبوه و توضیح انبوه محصول — وقتی تمام می‌شود، متوقف می‌شود یا کاملاً شکست می‌خورد **یک** اعلان در پیشخوان به همان کسی می‌دهد که شروعش کرده است: عنوان وضعیت، تعداد انجام‌شده/ردشده/ناموفق/متوقف از کل، پنج عنوان اول با لینک ویرایش، دلیل توقف و دکمه‌های «کارها» و «ادامه». بستن اعلان در متای همان کاربر ثبت می‌شود، پس دیگر برنمی‌گردد.
* **ایمیل اختیاری (پیش‌فرض خاموش):** در تب «پیشرفته» زیر «اطلاع‌رسانی» می‌توانید ایمیل را روی «به کسی که کار را شروع کرده» یا «به یک نشانی ثابت» بگذارید. متن ایمیل همان خلاصه‌ی فارسی است — نسخه‌ی متن ساده به‌اضافه‌ی یک HTML کم‌حجم. برای هر تغییر وضعیت دسته حداکثر یک ایمیل، و در هر ساعت حداکثر ۱۰ ایمیل. مقاله‌ی تکی که خودتان روی صفحه شروع می‌کنید هیچ‌وقت ایمیل نمی‌شود.
* **توقف روی خطاهای پیاپی:** تا پیش از این فقط سقف روزانه و تمام‌شدن اعتبار کل دسته را متوقف می‌کرد؛ حالا اگر سه کار از یک دسته ناموفق شوند و هنوز کاری مانده باشد، بقیه هم متوقف می‌شوند تا کلید بی‌خود خرج نشود. با «ادامه» از همان‌جا ادامه پیدا می‌کند.
* **تب «گزارش» روی صفحه‌ی «مصرف» (۶.۸):** این ماه در برابر ماه گذشته — مقاله، متای سئو، متن جایگزین تصویر، توضیح محصول، لینک داخلی، بازبینی، اصلاح نگارشی و پیش‌نویس پاسخ دیدگاه، هرکدام با عدد ماه قبل و درصد تغییر. به‌اضافه‌ی مجموع توکن، **میانه‌ی توکن هر مقاله**، تعداد درخواست و ناموفق، روزهای باقی‌ماندهٔ اعتبار، نمودار روزهای پرکار ماه، سهم هر کار از هزینه با نوار درصد، و پنج مدل پرمصرف. رقم فارسی، راست‌به‌چپ و موبایل‌فرست. هیچ درخواست تازه‌ای به Sinox فرستاده نمی‌شود: عددها از لاگ محلی و همان وضعیت کلیدِ کش‌شده‌ی ویجت می‌آیند.
* **خروجی CSV مصرف:** صفحه‌ی «مصرف» فیلتر بازه (۷/۳۰/۹۰ روز)، کار و وضعیت گرفت و دکمه‌ی «خروجی CSV» دقیقاً همان ردیف‌هایی را می‌دهد که روی صفحه می‌بینید. فایل با BOM یونیکد شروع می‌شود تا اکسل فارسی را درست نشان دهد و هر سلولی که با `=` `+` `-` `@` شروع شود با یک آپستروف بی‌اثر می‌شود (فرمول در اکسل اجرا نمی‌شود). گزارش ماهانه هم دکمه‌ی «خروجی JSON» دارد.
* **خط «این ماه» در ویجت پیشخوان:** زیر نوار اعتبار یک خط اضافه شد — «این ماه: N مقاله · M توکن» — از راه اکشن تازه‌ی `sinox_ai_widget_after_credit`، بدون تکرار حتی یک خط از نشانه‌گذاری ویجت.
* برای توسعه‌دهنده‌ها: اکشن‌های تازه `sinox_ai_batch_paused` (`$batch_id`, `$reason`) و `sinox_ai_batch_resumed` (`$batch_id`) روی صف، `sinox_ai_batch_finished` (`$payload`) یک‌بار در هر تغییر وضعیت دسته، و `sinox_ai_widget_after_credit` (`$snapshot`) داخل ویجت؛ فیلترهای `sinox_ai_notify_email` (`$mail`, `$payload`)، `sinox_ai_notify_mail_limit` (`$limit`) و `sinox_ai_batch_labels` (`$labels`). دو تنظیم تازه داخل `sinox_ai_settings`: `notify_email_mode` و `notify_email_to`؛ دو آپشن تازه `sinox_ai_notify_state` و `sinox_ai_notify_mail_log` و متای کاربری `sinox_ai_notices` (هر سه در uninstall پاک می‌شوند).
* **«شروع» فقط یک بار (۶.۱):** آیتم منوی «شروع» تا وقتی راهنمای سه‌قدمی تمام یا رد نشده در منو می‌ماند و بعد از آن حذف می‌شود. صفحه‌ی راهنما حذف نمی‌شود — از لینک «شروع مجدد راهنما» در پایین صفحه‌ی تنظیمات، از آدرس خودش و از مسیر بازگشت `/connect` در دسترس است. اگر کلید API بعداً حذف شود، «شروع» دوباره در منو ظاهر می‌شود (سایتِ بی‌کلید هیچ کار دیگری برای شروع ندارد). فیلتر `sinox_ai_show_start_menu` این تصمیم را قابل تغییر می‌کند.
* **صفحه‌ی تنظیمات تب‌بندی شد:** شش تب — «اتصال» (کلید، نمایش ماسک‌شده، تست اتصال، مبدأ در حال استفاده، متن آماده برای پشتیبانی هاست)، «تولید» (پریست کیفیت، لحن، زبان، توضیح سایت، وضعیت پیش‌فرض، انتخاب دستی مدل)، «برند» (پروفایل صدای برند و نگاشت دسته‌ها)، «سئو و کیفیت» (افزونه‌ی سئوی شناسایی‌شده، افشاگری هوش مصنوعی، ویراستاری فارسی، محتوای بیات، لینک داخلی با embeddings، پیش‌نویس پاسخ دیدگاه)، «پیشرفته» (وضعیت حساب و سقف روزانه، به‌روزرسانی، اطلاع‌رسانی، مقایسه‌ی مدل‌ها، ویرایشگر قالب‌های پرامپت، کارت «درباره») و — فقط برای مدیر سایت — «دسترسی». تب‌ها لینک ساده‌ی `?tab=` هستند و تب فعال سمت سرور انتخاب می‌شود، پس صفحه بدون جاوااسکریپت هم کار می‌کند.
* **ذخیره‌ی هر تب مستقل است:** هر تب فرم خودش را دارد و `Sinox_Settings::sanitize()` هر کلیدی را که فرم نفرستاده باشد از مقدار ذخیره‌شده برمی‌دارد؛ چک‌باکس‌ها هم نشانه‌ی مالکیت دارند (`add_ai_disclosure` یک `hidden` صفر همراه دارد و سه تنظیم «هوشمندی» همان نشانه‌ی `[p4]` قبلی). نتیجه: ذخیره‌ی یکی از تب‌ها هیچ‌وقت تنظیمات تب دیگر را پاک نمی‌کند.
* درخواست `/api/key/status` فقط وقتی فرستاده می‌شود که تب «پیشرفته» باز باشد؛ سه تب دیگر هیچ تماس شبکه‌ای ندارند.
* بدون تغییر در نام آپشن‌ها و قلاب‌ها: `sinox_ai_settings_after_form` همچنان اجرا می‌شود — روی همان تبی که باکس مقایسه‌ی مدل در آن است («پیشرفته»). فیلدهای فاز ۴ حالا روی قلاب تازه‌ی `sinox_ai_settings_quality_fields` چاپ می‌شوند.
* **به‌روزرسانی از پیشخوان وردپرس (۶.۵):** تا وقتی افزونه در مخزن wordpress.org منتشر نشده، نسخه‌ها از `https://sinoxapi.com/wp/updates.json` اعلام می‌شوند: صفحه‌ی «افزونه‌ها» مثل هر افزونه‌ی دیگری «نگارش تازه‌ای در دسترس است» را نشان می‌دهد، «مشاهده جزئیات» فهرست تغییرات همان نسخه را باز می‌کند و به‌روزرسانی خودکار هم قابل فعال‌سازی است. فایل نصب فقط از دامنه‌ی sinoxapi.com پذیرفته می‌شود؛ اگر دستکاری‌شده‌ای آدرس دیگری بدهد، به‌روزرسانی رد می‌شود و به مدیر هشدار داده می‌شود. پاسخ ۱۲ ساعت و خطاها ۱ ساعت کش می‌شوند، و دکمه‌ی «بررسی دوباره» در تب «پیشرفته» کش را پاک می‌کند و نسخه‌ی نصب‌شده و آخرین نسخه را کنار هم نشان می‌دهد. با `DISALLOW_FILE_MODS` کل این مسیر خاموش است و با فیلتر `sinox_ai_update_manifest_url` می‌توان آدرس دیگری داد.
* **رقم فارسی در همه‌ی صفحه‌ها (۶.۱۰):** هر عددی که روی صفحه‌های افزونه می‌بینید — صفحه‌ی مصرف و لاگ فراخوانی‌ها، تب گزارش، صفحه‌ی کارها، ایده‌ها، ویجت پیشخوان، جعبه‌ی تخمین هزینه و پیام‌های نتیجه — با رقم فارسی نوشته می‌شود و تاریخ‌ها هم همین‌طور (تقویم میلادی می‌ماند؛ فقط رقم‌ها فارسی می‌شوند). روی سایت انگلیسی همه‌چیز با رقم لاتین می‌آید. شناسه‌ی مدل، شماره‌ی نسخه، کد خطای HTTP و شناسه‌ی نوشته عمداً لاتین و چپ‌به‌راست می‌مانند تا بشود عیناً کپی‌شان کرد.
* **نوشته‌های کلاسیک در سایدبار ویرایشگر:** نوشته‌ی قدیمی HTML در گوتنبرگ یک بلوک «کلاسیک» است و سایدبار Sinox تا امروز روی آن هیچ کاری نمی‌کرد. حالا می‌گوید چرا، و دکمه‌ی «تبدیل به بلاک‌ها» را نشان می‌دهد که پس از یک تأیید، نوشته را به بلاک‌های وردپرس تبدیل می‌کند. تا وقتی ذخیره نکنید چیزی عوض نمی‌شود و Ctrl+Z هم برش می‌گرداند.
* **کارت «درباره» با فهرست تغییرات:** تب «پیشرفته» حالا نسخه‌ی افزونه، لینک راهنما، لینک پشتیبانی تلگرام و یک فهرست تغییرات بازشونده را نشان می‌دهد که مستقیم از readme.txt خوانده و یک روز کش می‌شود.
* **ظاهر راست‌به‌چپ کامل شد:** روی سایت فارسی وردپرس `admin-rtl.css` را **به‌جای** `admin.css` بار می‌کند، و چند گروه قاعده (از جمله ویرایشگر قالب‌های پرامپت ۶.۶) فقط در فایل چپ‌به‌راست بودند — یعنی روی سایت فارسی اصلاً وجود نداشتند. حالا دو فایل آینه‌ی هم‌اند.
* **یکدستی صفحه‌ها:** همه‌ی صفحه‌های افزونه یک سربرگ یکسان (آیکن + عنوان + یک خط توضیح) و یک پاورقی یکسان با لینک «پشتیبانی در تلگرام» دارند، و پیام‌های خطای شبکه همه‌جا یک لحن دارند.

= 1.2.1 =
* **رفع اشکال (پل سئو، All in One SEO):** خواندن متای موجود از AIOSEO روی هر نوشته‌ای که از قبل کلیدواژه‌ی کانونی داشت خطای مهلک می‌داد و درخواست با خطای ۵۰۰ برمی‌گشت — یعنی «متای سئو با Sinox» روی نوشته‌های دارای متا اصلاً کار نمی‌کرد و مسیر تأییدِ بازنویسی هرگز نمایش داده نمی‌شد. AIOSEO ستون‌های JSON خود را هنگام خواندن به `stdClass` تبدیل می‌کند و تبدیل `(array)` فقط لایه‌ی بیرونی را باز می‌کند، پس `$kp['focus']['keyphrase']` روی یک شیء انجام می‌شد. حالا مقدار با یک رفت‌وبرگشت JSON به آرایه‌ی انجمنی نرمال می‌شود (همان کاری که خود AIOSEO می‌کند).
* **پل سئو، AIOSEO:** کلیدواژه‌ی کانونی علاوه بر ستون قدیمی `keyphrases` در ستون اختصاصی `focus_keyword` هم نوشته می‌شود. از نسخه‌ی ۵.۰، AIOSEO خودش کلیدواژه را از این ستون می‌خواند و `keyphrases` فقط پشتیبانِ سازگاری است؛ نوشتن تنها در ستون قدیمی ردیف را در وضعیتی می‌گذاشت که خود AIOSEO هرگز نمی‌سازد. ساختار `keyphrases` هم کامل شد (`focus.score` و آرایه‌ی `additional`).
* **پل سئو، AIOSEO:** عنوان و توضیح در متای نوشته‌ی `_aioseo_title` و `_aioseo_description` هم بازتاب داده می‌شود، همان‌طور که `Post::updatePostMeta()` خود AIOSEO هنگام ذخیره انجام می‌دهد، تا افزونه‌های چندزبانه که متا را می‌خوانند مقدار تازه را ببینند.
* **پل سئو، AIOSEO:** اگر `save()` مدل AIOSEO با خطای پایگاه‌داده برگردد (که استثنا پرتاب نمی‌کند)، حالا مثل قبل به متای آینه‌ای برمی‌گردیم؛ پیش از این فقط استثنا این مسیر را فعال می‌کرد.

= 1.2.0 =
* **ووکامرس (۳.۱):** جعبه‌ی «توضیحات با Sinox» روی صفحه‌ی ویرایش محصول با سه دکمه (توضیح کوتاه، توضیح بلند، هر دو). پرامپت از روی نام، ویژگی‌ها، دسته، برچسب و قیمت همان محصول ساخته می‌شود و لحن از تنظیمات افزونه می‌آید. متن در همان صفحه جای‌گذاری می‌شود و تا زدن «به‌روزرسانی» ذخیره نمی‌شود؛ اگر فیلد از قبل پر باشد، مثل متای سئو اول تأیید می‌گیرد.
* **ووکامرس، دسته‌جمعی:** کنش گروهی «توضیحات با Sinox» در فهرست محصول‌ها (حداکثر ۵۰ محصول) با تیک «بازنویسی»، از همان صف کارها عبور می‌کند: یک کار از نوع `product_desc` برای هر محصول، پشت‌سرهم و هرگز موازی، با جدول پیشرفت زنده و دکمه‌ی لغو دسته. بدون تیک بازنویسی، محصول‌های دارای توضیح رد می‌شوند.
* اگر ووکامرس فعال نباشد هیچ‌کدام از این قلاب‌ها ثبت نمی‌شود.
* **خروجی بلوکی (گوتنبرگ):** مقاله‌ی تولیدشده حالا با نشانه‌گذاری واقعی بلوک نوشته می‌شود — `wp:heading` با سطح درست، `wp:paragraph`، و `wp:list`/`wp:list-item` (شامل فهرست تودرتو) — پس در ویرایشگر به‌جای یک بلوک کلاسیک، بلوک‌های واقعی می‌بینید و سایدبار Sinox روی همان‌ها کار می‌کند. تبدیل فقط یک‌جا (مرحله‌ی چیدن مقاله) و با `Sinox_Blocks::from_html()` انجام می‌شود و اگر Classic Editor فعال باشد همان HTML ساده‌ی قبلی نوشته می‌شود.
* **تصویر شاخص (۳.۲):** کارت «به‌زودی» در صفحه‌ی مقاله‌ی جدید و در قدم سوم راهنما، به‌اضافه‌ی مسیر کد آماده پشت فیلتر `sinox_ai_image_provider`؛ تا وقتی هیچ سرویسی ثبت نشده، هیچ درخواست شبکه‌ای برای تصویر فرستاده نمی‌شود.
* **مسیریابی مدل:** کارهای سبک (متن جایگزین تصویر، متای سئو، بازنویسی، مقایسه‌ی «سریع»، دیدگاه‌ها، لینک داخلی) و کل پریست «سریع» روی مدل‌های بدون استدلال سنجاق شدند: اول `gemini-3.8-flash`، بعد `glm-5.3-flash`، بعد `deepseek-v4.1-flash`. پریست‌های «متعادل» و «حداکثر کیفیت» دست‌نخورده‌اند.
* **انطباق با مخزن وردپرس (۳.۴):** بخش External Services کامل شد (همه‌ی اندپوینت‌ها از جمله `/connect` و `/api/connect/exchange`)، تصریح شد که افزونه هیچ تله‌متری ندارد و هیچ فایل مینیفای‌شده‌ای بدون سورس نمی‌فرستد، سربرگ مجوز GPLv2+ روی تک‌تک فایل‌های PHP اضافه شد، و ترجمه‌ی کامل انگلیسی (`languages/sinox-ai-en_US.po/.mo`) اضافه شد تا زیر `en_US` تمام رابط انگلیسی باشد.
* **لینک داخلی هوشمند (۴.۱):** نمایه‌ی محلی هر نوشته‌ی منتشرشده در متای `_sinox_link_keys` (عنوان، نامک، دسته و برچسب با وزن ۳ برابر، به‌اضافه‌ی ۳۰۰ کلمه‌ی اول؛ امتیازدهی شبه TF-IDF)، ساخته‌شده به‌صورت تنبل و روی هر `save_post`، با دکمه‌ی «بازسازی نمایه». در ویرایشگر یک پنل (گوتنبرگ) یا متاباکس (کلاسیک) تا ۵ پیشنهاد می‌دهد با عبارت لنگری که واقعاً در متن هست؛ «افزودن» فقط اولین جای مناسب را لینک می‌کند و هرگز داخل عنوان، داخل لینک موجود، داخل کد یا نشانه‌گذاری بلوک نمی‌رود و یک مقصد را دو بار لینک نمی‌کند. کنش گروهی «پیشنهاد لینک داخلی (Sinox)» در فهرست نوشته‌ها و برگه‌ها برای هر مورد یک کار از نوع `links` می‌سازد که تا ۳ لینک اضافه می‌کند و در `_sinox_links_added` ثبتشان می‌کند، و صفحه‌ی «لینک‌های داخلی» گزارش و وضعیت کارها را نشان می‌دهد. هیچ توکنی مصرف نمی‌شود.
* **embedding اختیاری:** با هر نوع کلید (و تنظیم `links_auto_embeddings`) بردار `text-embedding-3-small` در `_sinox_embedding` ذخیره و برای مرتب‌سازی پیشنهادها استفاده می‌شود. هر فراخوانی یک‌دهم یک فراخوانی متنی هزینه دارد؛ هر رد شدن این مسیر را یک روز خاموش می‌کند و مسیر کلیدواژه‌ای همیشه کار می‌کند.
* **محتوای بیات (۴.۲):** صفحه‌ی «محتوای بیات» با فهرست نوشته‌های منتشرشده‌ای که بیش از `stale_months` (پیش‌فرض ۱۲) ویرایش نشده‌اند، از قدیمی‌ترین، همراه با تعداد کلمه (شمارش سازگار با فارسی)، تاریخ آخرین ویرایش و سن؛ ستون «بازدید» فقط وقتی نشان داده می‌شود که افزونه‌ی آماری‌ای آن را در اختیار بگذارد. «بازنویسی» یک کار از نوع `refresh` می‌سازد: مدل متن قدیمی، تاریخ امروز و توضیح سایت را می‌گیرد و خروجی به‌صورت **پیش‌نویس تازه** با عنوان «(بازنویسی‌شده)» ذخیره می‌شود (با نشانه‌گذاری بلوک وقتی گوتنبرگ فعال است)، به اصل نوشته با متای `_sinox_refresh_of` / `_sinox_refresh_draft` وصل می‌شود و نسخه‌ی منتشرشده **هرگز** تغییر نمی‌کند. نمای «مقایسه» دو نسخه را کنار هم می‌گذارد.
* **پیش‌نویس پاسخ به دیدگاه‌ها (۴.۳):** کنش ردیفی و کنش گروهی «پیش‌نویس پاسخ با Sinox» در فهرست دیدگاه‌ها، با جعبه‌ی درجای ویرایش‌پذیر زیر همان دیدگاه. پیش‌نویس در متای دیدگاه `_sinox_reply_draft` می‌ماند تا خودتان «تأیید و ارسال» یا «دور انداختن» را بزنید؛ ارسال، پاسخ را با `wp_new_comment` به‌نام کاربر جاری ثبت می‌کند. **هیچ‌وقت انتشار خودکار نداریم**، و دیدگاه‌های تأییدنشده، جفنگ، زباله‌دان و انواع غیرعادی (پینگ‌بک، نقد محصول) اصلاً پیشنهاد پاسخ نمی‌گیرند. زبان پاسخ از زبان خود دیدگاه گرفته می‌شود و لحن از تنظیمات. با خاموش‌کردن `comments_enabled` هیچ قلابی ثبت نمی‌شود.
* سه تنظیم تازه زیر «هوشمندی» در صفحه‌ی تنظیمات: `stale_months`، `links_auto_embeddings` و `comments_enabled`.
* **رفع اشکال (مهم، فارسی‌شکن):** `trim()` و `rtrim()` روی **بایت** کار می‌کنند، نه نویسه. هر جای افزونه که ماسکی با نویسه‌ی چندبایتی (`،`، `؟`، `«»`، `“”`) داشت، می‌توانست نیمه‌ی یک حرف فارسی را ببُرد و رشته‌ی نامعتبر UTF-8 بسازد که MySQL از ذخیره‌اش سر باز می‌زند. هر سه مورد پیدا و با regex یونیکدی جایگزین شد: برش انتهایی عنوان‌ها در لینک داخلی، پاک‌سازی متن جایگزین تصویر (`Sinox_Media::clean()`) و کوتاه‌کردن متای سئو (`Sinox_SEO_Bridge::clip()`). مورد سوم روی حرف **«ی»** (U+06CC) خراب می‌شد — یعنی هر متای سئویی که دقیقاً روی یک «ی» بریده می‌شد. برش بدون mbstring هم حالا روی مرز نویسه انجام می‌شود.
* **یک قرارداد برای کل صف:** `Sinox_Queue::process()` فقط نوع `article` را خودش گام‌به‌گام پیش می‌برد (چون تنها نوعی است که چند فراخوانی مدل دارد و باید از `partial` ادامه پیدا کند)؛ هر نوع دیگری — `product_desc`، `links`، `refresh` و هر نوعی که افزونه‌ی دیگری ثبت کند — از یک فیلتر واحد `sinox_ai_run_job` عبور می‌کند. قرارداد: `null` یعنی «مال من نیست»، `true` یعنی «تمام شد»، `WP_Error` یعنی «شکست خورد، سیاست تلاش دوباره را اعمال کن» و آرایه‌ای با کلید `row_status` یعنی «هنوز کار دارم، ردیف را با `partial` برگردان». فیلتر دوم `sinox_ai_advance_job` که هیچ‌کس به آن وصل نبود حذف شد. نوعی که هیچ هندلری نپذیرد به‌جای چرخیدن بی‌پایان، با پیام روشن `failed` می‌شود. برچسب نوع کار با `sinox_ai_job_type_labels` قابل افزودن است.
* **ترتیب منو:** شروع، مقاله‌ی جدید، تولید انبوه، کارها، لینک داخلی، محتوای بیات، alt تصاویر، محصولات، مصرف، تنظیمات. «محصولات» فقط وقتی ووکامرس فعال باشد در منو می‌آید و بدون انتخاب محصول، خودش راه رسیدن از فهرست محصول‌ها را توضیح می‌دهد.

= 1.1.0 =
* متن جایگزین (alt) انبوه رسانه: صفحه‌ی «رسانه → alt با Sinox» با شمارش و بندانگشتی تصویرهای بدون alt، اجرای پی‌درپی یک تصویر در هر درخواست با نوار پیشرفت و دکمه‌ی توقف، کنش دسته‌جمعی در فهرست رسانه، دکمه‌ی تکی در جزئیات پیوست، ستون «متن جایگزین» با نشان «ساخته‌ی Sinox AI» و محافظت از متن‌های موجود مگر با تیک بازنویسی.
* سایدبار گوتنبرگ «Sinox AI» با بازنویسی/بسط/خلاصه/تغییر لحن روی متن انتخاب‌شده (یا کل بلوک)، پیش‌نمایش قبل/بعد و جایگزینی قابل بازگشت با Ctrl+Z؛ همان امکانات با یک دکمه در نوار ابزار ویرایشگر کلاسیک.
* مسیر REST تازه: `POST sinox-ai/v1/rewrite` (نیازمند دسترسی `edit_posts` و هدر `X-WP-Nonce`).
* ویجت اعتبار در پیشخوان (پلن، باقی‌مانده، مصرف ۷ روز، تخمین روز باقی‌مانده، آخرین خطا، دکمه‌ی شارژ) و نوتیس «کمتر از ۲۰٪ اعتبار» با بستن ۲۴ ساعته.
* باکس مقایسه‌ی مدل در صفحه‌ی تنظیمات: یک پرامپت تا ۵۰۰ نویسه، سه مدل به‌صورت موازی، سقف ۴۰۰ توکن برای هر خروجی، و «این را پیش‌فرض کن».
* پیام تبریک یک‌باره پس از اولین مقاله‌ی تولیدشده، با پیشنهاد کار بعدی (متای نوشته‌های قدیمی یا alt تصویرها).
* راهنمای نسخه‌ی ۲: دکمه‌ی «کلید ندارم — رایگان بگیرم» و تبادل امن توکن با `/api/connect/exchange` سمت سرور، با پیام فارسی برای هر خطا (لینک مصرف‌شده/منقضی، سایت ناهم‌خوان، مشکل شبکه‌ی هاست).
* **استریم:** `Sinox_API::stream()` روی cURL با تجزیه‌ی SSE، و دو مسیر REST تازه: `sinox-ai/v1/stream/section` (نمایش زنده‌ی یک بخش) و `sinox-ai/v1/stream/probe` (خودآزمایی سه‌تیکی برای تشخیص هاست‌های بافرکننده، نتیجه یک روز کش می‌شود). صفحه‌ی مقاله‌ی جدید متن هر بخش را زنده نشان می‌دهد و حالت فعال را زیر نوار پیشرفت می‌نویسد؛ با هر خطای وسط کار، بدون از دست رفتن پیشرفت به حالت مرحله‌به‌مرحله برمی‌گردد.
* **صف کارها:** جدول `{prefix}sinox_jobs` (وضعیت‌های queued/running/paused/done/failed/cancelled، payload و progress و partial، تعداد تلاش و خطای آخر). کار مقاله از ترنزینت به این جدول منتقل شد (قرارداد polling هر ۳ ثانیه دست‌نخورده)، دکمه‌ی لغو، ادامه از همان‌جا پس از خطا (۳ تلاش با فاصله‌ی ۱۰ و ۳۰ ثانیه) و صفحه‌ی «کارها» با لغو/تلاش دوباره/حذف. پاک‌سازی خودکار کارهای تمام‌شده بعد از ۷ روز.
* اجرای کارها با کران وردپرس و یک درخواست لوپ‌بک غیرمسدودکننده (به‌جای Action Scheduler، تا حجم افزونه کم بماند)؛ همیشه فقط یک کار هم‌زمان اجرا می‌شود تا محدودیت نرخ و سقف روزانه‌ی کلید رعایت شود.
* **تولید انبوه:** صفحه‌ی «تولید انبوه» با فهرست موضوع یا CSV (ستون‌های موضوع، کلیدواژه، دسته، طول، وضعیت؛ حداکثر ۵۰ ردیف)، جدول پیشرفت زنده، نوار پیشرفت کل، توقف/ادامه/لغو دسته و رد کردن ردیف‌های تکراری. با خطای «سقف روزانه‌ی کلید» کل دسته متوقف می‌شود و با دکمه‌ی «ادامه» از همان‌جا ادامه می‌یابد.
* **کار رهاشده:** اگر مرورگرِ سازنده‌ی یک مقاله بسته شود، کار دیگر تا ابد «در حال اجرا» نمی‌ماند: تیک کران هر کاری را که بیش از ۵ دقیقه پیشرفتی نداشته با همان پیشرفت ذخیره‌شده دوباره به صف می‌فرستد و بعد از ۳ بار ناموفق علامت می‌زند. صفحه‌ی «کارها» چنین ردیفی را با نشان «متوقف‌شده؟» و دکمه‌ی «تلاش دوباره» نشان می‌دهد.
* یک پوسته‌ی مشترک برای همه‌ی صفحه‌ها (`assets/css/sinox-base.css`): کارت، فیلد، نوار پیشرفت، نشان وضعیت و یادداشت فقط یک بار تعریف شده‌اند و سه بسته‌ی دیگر به آن وابسته‌اند. تداخل قبلی کلاس `.sinox-note` بین صفحه‌ی تنظیمات و صفحه‌های محتوا برطرف شد.
* ترتیب منو: شروع، مقاله‌ی جدید، تولید انبوه، کارها، alt تصاویر، مصرف، تنظیمات. «alt تصاویر» حالا از منوی Sinox هم در دسترس است (همان صفحه‌ی زیر «رسانه»).
* امنیت CSV: سلول‌هایی که با `=`، `+`، `-` یا `@` شروع می‌شوند پاک‌سازی می‌شوند تا هنگام خروجی گرفتن دوباره در اکسل به فرمول تبدیل نشوند؛ سقف ۲۰۰۰ خط، ۸ ستون و ۳۰۰ نویسه برای هر سلول اضافه شد.
* نانس REST فقط یک‌بار در هر صفحه منتشر می‌شود (`window.sinoxRest`) به‌جای دو بار در دو شیء مختلف.
* قلاب‌های تازه برای توسعه‌دهندگان: `sinox_ai_article_generated`, `sinox_ai_job_finished`, `sinox_ai_max_tokens`, `sinox_ai_article_lengths`, `sinox_ai_stream_available`, `sinox_ai_stream_probe_enabled`, `sinox_ai_credit_snapshot`, `sinox_ai_alt_vision_model`, `sinox_ai_http_timeout`.
* حذف افزونه (`uninstall.php`) همه‌ی چیزهای نسخه‌ی ۱.۱.۰ را پاک می‌کند: آپشن‌ها، ترنزینت‌ها، رویدادهای کران، دو جدول `sinox_usage` و `sinox_jobs`، متای نوشته‌ها (شامل `_sinox_prompt_hash` و `_sinox_alt_generated`) و متای کاربر `sinox_ai_low_dismissed`. متای سئویی که برای شما نوشته شده محتوای شماست و عمداً باقی می‌ماند.

= 1.0.0 =
* نسخه‌ی اول.
* هسته: ذخیره‌ی رمزنگاری‌شده‌ی کلید، کلاینت API با نگاشت خطا به فارسی، تشخیص نوع کلید (توکنی/ریکوستی)، بررسی سلامت اتصال با فالبک خودکار به مبدأ جایگزین، صفحه‌ی تنظیمات، روتر مدل بر پایه‌ی پریست کیفیت و گزارش مصرف محلی.
* راهنمای راه‌اندازی سه‌قدمی با ریدایرکت یک‌باره پس از فعال‌سازی.
* تولید مقاله‌ی تکی به‌صورت گام‌به‌گام (بدون تایم‌اوت PHP).
* متای سئو: تکی از فهرست نوشته‌ها و ویرایشگر، و دسته‌جمعی با نمایش پیشرفت؛ پل سئو برای رنک‌مث، یوآست، All in One SEO و حالت بدون افزونه‌ی سئو.
* گارد کیفیت: ستون و نشان «بازبینی‌نشده»، نوتیس در ویرایشگر، تشخیص عنوان تکراری و افشاگری اختیاری هوش مصنوعی.
