<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fa">
	<id>https://wiki.shakibaabutalebi.ir/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Admin</id>
	<title>shakiba - مشارکت‌های کاربر [fa]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.shakibaabutalebi.ir/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Admin"/>
	<link rel="alternate" type="text/html" href="https://wiki.shakibaabutalebi.ir/index.php?title=%D9%88%DB%8C%DA%98%D9%87:%D9%85%D8%B4%D8%A7%D8%B1%DA%A9%D8%AA%E2%80%8C%D9%87%D8%A7/Admin"/>
	<updated>2026-10-30T15:34:51Z</updated>
	<subtitle>مشارکت‌های کاربر</subtitle>
	<generator>MediaWiki 1.46.0</generator>
	<entry>
		<id>https://wiki.shakibaabutalebi.ir/index.php?title=%D9%85%D8%AF%DB%8C%D8%A7%D9%88%DB%8C%DA%A9%DB%8C:Common.css&amp;diff=27</id>
		<title>مدیاویکی:Common.css</title>
		<link rel="alternate" type="text/html" href="https://wiki.shakibaabutalebi.ir/index.php?title=%D9%85%D8%AF%DB%8C%D8%A7%D9%88%DB%8C%DA%A9%DB%8C:Common.css&amp;diff=27"/>
		<updated>2026-10-30T12:42:45Z</updated>

		<summary type="html">&lt;p&gt;Admin: صفحه‌ای تازه حاوی «/* دستورات این بخش همهٔ کاربران را تحت تاثیر قرار می‌دهند. */ .mw-wiki-logo {     background-size: contain !important;     background-repeat: no-repeat !important;     background-position: center !important; }» ایجاد کرد&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* دستورات این بخش همهٔ کاربران را تحت تاثیر قرار می‌دهند. */&lt;br /&gt;
.mw-wiki-logo {&lt;br /&gt;
    background-size: contain !important;&lt;br /&gt;
    background-repeat: no-repeat !important;&lt;br /&gt;
    background-position: center !important;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.shakibaabutalebi.ir/index.php?title=HTML_CSS_JavaScript&amp;diff=26</id>
		<title>HTML CSS JavaScript</title>
		<link rel="alternate" type="text/html" href="https://wiki.shakibaabutalebi.ir/index.php?title=HTML_CSS_JavaScript&amp;diff=26"/>
		<updated>2026-09-06T07:34:55Z</updated>

		<summary type="html">&lt;p&gt;Admin: صفحه‌ای تازه حاوی «== طراحی سایت با HTML، CSS و JavaScript ==  این سه تکنولوژی، ستون اصلی توسعهٔ وب هستند: &amp;#039;&amp;#039;&amp;#039;HTML&amp;#039;&amp;#039;&amp;#039; ساختار صفحه، &amp;#039;&amp;#039;&amp;#039;CSS&amp;#039;&amp;#039;&amp;#039; ظاهر و استایل، و &amp;#039;&amp;#039;&amp;#039;JavaScript&amp;#039;&amp;#039;&amp;#039; رفتار و تعامل صفحه را مشخص می‌کند. با ترکیب این سه می‌توان هر نوع صفحهٔ وب استاتیک یا پویا ساخت.  == مفاهیم پایه ==  * &amp;#039;&amp;#039;&amp;#039;HT...» ایجاد کرد&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== طراحی سایت با HTML، CSS و JavaScript ==&lt;br /&gt;
&lt;br /&gt;
این سه تکنولوژی، ستون اصلی توسعهٔ وب هستند: &#039;&#039;&#039;HTML&#039;&#039;&#039; ساختار صفحه، &#039;&#039;&#039;CSS&#039;&#039;&#039; ظاهر و استایل، و &#039;&#039;&#039;JavaScript&#039;&#039;&#039; رفتار و تعامل صفحه را مشخص می‌کند. با ترکیب این سه می‌توان هر نوع صفحهٔ وب استاتیک یا پویا ساخت.&lt;br /&gt;
&lt;br /&gt;
== مفاهیم پایه ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;HTML (HyperText Markup Language)&#039;&#039;&#039;: زبان نشانه‌گذاری برای تعریف ساختار و محتوای صفحه (عنوان، پاراگراف، تصویر، لینک و...)&lt;br /&gt;
* &#039;&#039;&#039;CSS (Cascading Style Sheets)&#039;&#039;&#039;: زبان استایل‌دهی برای تعیین ظاهر عناصر HTML (رنگ، فونت، چیدمان، فاصله‌ها و...)&lt;br /&gt;
* &#039;&#039;&#039;JavaScript&#039;&#039;&#039;: زبان برنامه‌نویسی برای افزودن تعامل و پویایی به صفحه (کلیک، انیمیشن، اعتبارسنجی فرم و...)&lt;br /&gt;
* &#039;&#039;&#039;DOM (Document Object Model)&#039;&#039;&#039;: نمایش ساختاری صفحهٔ HTML که JavaScript می‌تواند آن را بخواند و تغییر دهد&lt;br /&gt;
* &#039;&#039;&#039;Tag (برچسب)&#039;&#039;&#039;: واحد اصلی HTML، مثل &amp;lt;code style=&amp;quot;direction:ltr;&amp;quot;&amp;gt;&amp;amp;lt;div&amp;amp;gt;&amp;lt;/code&amp;gt; یا &amp;lt;code style=&amp;quot;direction:ltr;&amp;quot;&amp;gt;&amp;amp;lt;p&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Element (عنصر)&#039;&#039;&#039;: یک تگ کامل همراه با محتوای داخل آن&lt;br /&gt;
* &#039;&#039;&#039;Attribute (ویژگی)&#039;&#039;&#039;: اطلاعات اضافه روی یک تگ، مثل &amp;lt;code style=&amp;quot;direction:ltr;&amp;quot;&amp;gt;class&amp;lt;/code&amp;gt; یا &amp;lt;code style=&amp;quot;direction:ltr;&amp;quot;&amp;gt;id&amp;lt;/code&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Selector (انتخابگر)&#039;&#039;&#039;: در CSS، روشی برای مشخص کردن این‌که کدام عنصر HTML استایل‌دهی شود&lt;br /&gt;
* &#039;&#039;&#039;Responsive Design&#039;&#039;&#039;: طراحی‌ای که با اندازه‌های مختلف صفحه‌نمایش (موبایل، تبلت، دسکتاپ) سازگار می‌شود&lt;br /&gt;
* &#039;&#039;&#039;Event (رویداد)&#039;&#039;&#039;: اتفاقی که در صفحه رخ می‌دهد (کلیک، اسکرول، تایپ) و JavaScript می‌تواند به آن واکنش نشان دهد&lt;br /&gt;
&lt;br /&gt;
== ساختار پایهٔ یک صفحهٔ HTML ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;direction:ltr; text-align:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;lt;!DOCTYPE html&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;html lang=&amp;quot;fa&amp;quot;&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;head&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;meta charset=&amp;quot;UTF-8&amp;quot;&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;title&amp;amp;gt;عنوان صفحه&amp;amp;lt;/title&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;link rel=&amp;quot;stylesheet&amp;quot; href=&amp;quot;style.css&amp;quot;&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/head&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;body&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;h1&amp;amp;gt;سلام دنیا&amp;amp;lt;/h1&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;p&amp;amp;gt;این یک پاراگراف است.&amp;amp;lt;/p&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;script src=&amp;quot;script.js&amp;quot;&amp;amp;gt;&amp;amp;lt;/script&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/body&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/html&amp;amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== تگ‌های پرکاربرد HTML ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;direction:rtl; width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! توضیح !! تگ&lt;br /&gt;
|-&lt;br /&gt;
| تیتر (۶ سطح، از بزرگ به کوچک) || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;&amp;amp;lt;h1&amp;amp;gt; تا &amp;amp;lt;h6&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| پاراگراف || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;&amp;amp;lt;p&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| لینک || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;&amp;amp;lt;a href=&amp;quot;آدرس&amp;quot;&amp;amp;gt;متن&amp;amp;lt;/a&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| تصویر || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;&amp;amp;lt;img src=&amp;quot;آدرس&amp;quot; alt=&amp;quot;توضیح&amp;quot;&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| بخش‌بندی عمومی (بدون معنای خاص) || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;&amp;amp;lt;div&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| بخش‌بندی درون‌خطی (بدون معنای خاص) || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;&amp;amp;lt;span&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| لیست مرتب‌نشده (نقطه‌ای) || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;&amp;amp;lt;ul&amp;amp;gt;&amp;amp;lt;li&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| لیست مرتب (شماره‌دار) || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;&amp;amp;lt;ol&amp;amp;gt;&amp;amp;lt;li&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| جدول || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;&amp;amp;lt;table&amp;amp;gt;&amp;amp;lt;tr&amp;amp;gt;&amp;amp;lt;td&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| فرم || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;&amp;amp;lt;form&amp;amp;gt;&amp;amp;lt;input&amp;amp;gt;&amp;amp;lt;button&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| ناحیهٔ هدر معنایی صفحه || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;&amp;amp;lt;header&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| ناحیهٔ فوتر معنایی صفحه || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;&amp;amp;lt;footer&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| بخش ناوبری (منو) || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;&amp;amp;lt;nav&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== نحوهٔ اتصال CSS به HTML ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;direction:rtl; width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! روش !! نحوه&lt;br /&gt;
|-&lt;br /&gt;
| فایل خارجی (بهترین روش) || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;&amp;amp;lt;link rel=&amp;quot;stylesheet&amp;quot; href=&amp;quot;style.css&amp;quot;&amp;amp;gt;&amp;lt;/code&amp;gt; در head&lt;br /&gt;
|-&lt;br /&gt;
| داخل همان صفحه (Internal) || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;&amp;amp;lt;style&amp;amp;gt;...&amp;amp;lt;/style&amp;amp;gt;&amp;lt;/code&amp;gt; در head&lt;br /&gt;
|-&lt;br /&gt;
| درون یک تگ خاص (Inline) || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;&amp;amp;lt;p style=&amp;quot;color:red;&amp;quot;&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== انتخابگرهای پرکاربرد CSS ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;direction:rtl; width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! توضیح !! نحوهٔ نوشتن&lt;br /&gt;
|-&lt;br /&gt;
| انتخاب بر اساس نام تگ || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;p { }&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| انتخاب بر اساس کلاس || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;.className { }&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| انتخاب بر اساس شناسه (id) || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;#idName { }&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| انتخاب همهٔ عناصر || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;* { }&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| انتخاب عنصر فرزند مستقیم || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;.parent &amp;gt; .child { }&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| انتخاب هنگام هاور (نگه‌داشتن ماوس) || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;.className:hover { }&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== ویژگی‌های پرکاربرد CSS ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;direction:rtl; width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! توضیح !! ویژگی&lt;br /&gt;
|-&lt;br /&gt;
| رنگ متن || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;color&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| رنگ پس‌زمینه || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;background-color&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| اندازهٔ فونت || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;font-size&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| عرض و ارتفاع || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;width&amp;lt;/code&amp;gt; و &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;height&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| فاصلهٔ داخلی (بین محتوا و مرز) || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;padding&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| فاصلهٔ خارجی (بین عنصر و عناصر اطراف) || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;margin&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| نوع نمایش عنصر || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;display&amp;lt;/code&amp;gt; (block, inline, flex, grid, none)&lt;br /&gt;
|-&lt;br /&gt;
| چیدمان انعطاف‌پذیر (تک‌بعدی) || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;display: flex;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| چیدمان شبکه‌ای (دوبعدی) || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;display: grid;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| موقعیت‌دهی عنصر || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;position&amp;lt;/code&amp;gt; (static, relative, absolute, fixed)&lt;br /&gt;
|-&lt;br /&gt;
| گرد کردن گوشه‌ها || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;border-radius&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| سایه‌دار کردن جعبه || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;box-shadow&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== ریسپانسیو کردن سایت (Media Query) ==&lt;br /&gt;
&lt;br /&gt;
برای این‌که سایت روی موبایل و دسکتاپ متفاوت نمایش داده شود:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;direction:ltr; text-align:left;&amp;quot;&amp;gt;&lt;br /&gt;
/* برای صفحه‌نمایش‌های کوچک‌تر از 768px */&lt;br /&gt;
@media (max-width: 768px) {&lt;br /&gt;
  .container {&lt;br /&gt;
    flex-direction: column;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== مفاهیم پایهٔ JavaScript ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;direction:rtl; width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! توضیح !! نمونه کد&lt;br /&gt;
|-&lt;br /&gt;
| تعریف متغیر (قابل تغییر) || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;let x = 5;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| تعریف متغیر ثابت (غیرقابل تغییر) || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;const name = &amp;quot;علی&amp;quot;;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| تعریف تابع || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;function sayHi() { }&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| تابع پیکانی (Arrow Function) || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;const sayHi = () =&amp;gt; { }&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| شرط || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;if (x &amp;gt; 5) { } else { }&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| حلقه || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;for (let i = 0; i &amp;lt; 10; i++) { }&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| آرایه || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;let arr = [1, 2, 3];&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| شیء (Object) || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;let obj = {name: &amp;quot;علی&amp;quot;, age: 25};&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== دستکاری DOM با JavaScript ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;direction:rtl; width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! توضیح !! نمونه کد&lt;br /&gt;
|-&lt;br /&gt;
| انتخاب یک عنصر با id || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;document.getElementById(&amp;quot;myId&amp;quot;)&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| انتخاب یک عنصر با selector (CSS-like) || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;document.querySelector(&amp;quot;.myClass&amp;quot;)&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| انتخاب چند عنصر || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;document.querySelectorAll(&amp;quot;p&amp;quot;)&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| تغییر محتوای متنی || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;element.textContent = &amp;quot;متن جدید&amp;quot;;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| تغییر محتوای HTML || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;element.innerHTML = &amp;quot;&amp;amp;lt;b&amp;amp;gt;متن&amp;amp;lt;/b&amp;amp;gt;&amp;quot;;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| تغییر استایل || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;element.style.color = &amp;quot;red&amp;quot;;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| اضافه/حذف کلاس || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;element.classList.add(&amp;quot;active&amp;quot;)&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== رویدادها (Events) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;direction:ltr; text-align:left;&amp;quot;&amp;gt;&lt;br /&gt;
document.querySelector(&amp;quot;button&amp;quot;).addEventListener(&amp;quot;click&amp;quot;, function() {&lt;br /&gt;
  alert(&amp;quot;دکمه کلیک شد!&amp;quot;);&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;direction:rtl; width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! رویداد !! زمان وقوع&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;direction:ltr;&amp;quot;&amp;gt;click&amp;lt;/code&amp;gt; || هنگام کلیک روی عنصر&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;direction:ltr;&amp;quot;&amp;gt;submit&amp;lt;/code&amp;gt; || هنگام ارسال فرم&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;direction:ltr;&amp;quot;&amp;gt;input&amp;lt;/code&amp;gt; || هنگام تایپ در فیلد ورودی&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;direction:ltr;&amp;quot;&amp;gt;load&amp;lt;/code&amp;gt; || هنگام بارگذاری کامل صفحه&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;direction:ltr;&amp;quot;&amp;gt;mouseover&amp;lt;/code&amp;gt; || هنگام قرار گرفتن ماوس روی عنصر&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== ابزارهای مفید توسعه ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;DevTools مرورگر&#039;&#039;&#039; (کلید F12): بازرسی و دیباگ HTML/CSS/JS مستقیم در مرورگر&lt;br /&gt;
* &#039;&#039;&#039;VS Code&#039;&#039;&#039;: ویرایشگر کد محبوب با پشتیبانی قوی از این سه زبان&lt;br /&gt;
* &#039;&#039;&#039;Live Server (افزونهٔ VS Code)&#039;&#039;&#039;: نمایش زندهٔ تغییرات صفحه بدون نیاز به رفرش دستی&lt;br /&gt;
* &#039;&#039;&#039;Flexbox Froggy / Grid Garden&#039;&#039;&#039;: بازی‌های آموزشی برای یادگیری Flexbox و Grid در CSS&lt;br /&gt;
* &#039;&#039;&#039;MDN Web Docs&#039;&#039;&#039;: مرجع رسمی و کامل برای HTML، CSS و JavaScript&lt;br /&gt;
&lt;br /&gt;
== نکات و بهترین شیوه‌ها ==&lt;br /&gt;
&lt;br /&gt;
* از تگ‌های معنایی (Semantic) مثل &amp;lt;code style=&amp;quot;direction:ltr;&amp;quot;&amp;gt;header&amp;lt;/code&amp;gt;، &amp;lt;code style=&amp;quot;direction:ltr;&amp;quot;&amp;gt;nav&amp;lt;/code&amp;gt;، &amp;lt;code style=&amp;quot;direction:ltr;&amp;quot;&amp;gt;main&amp;lt;/code&amp;gt;، &amp;lt;code style=&amp;quot;direction:ltr;&amp;quot;&amp;gt;footer&amp;lt;/code&amp;gt; به‌جای &amp;lt;code style=&amp;quot;direction:ltr;&amp;quot;&amp;gt;div&amp;lt;/code&amp;gt; برای همه‌چیز استفاده کنید؛ هم برای سئو بهتر است هم خوانایی کد.&lt;br /&gt;
* کد CSS را در فایل جدا از HTML نگه دارید تا نگهداری و تغییر آن ساده‌تر باشد.&lt;br /&gt;
* همیشه صفحه را روی اندازه‌های مختلف صفحه‌نمایش (موبایل، تبلت، دسکتاپ) تست کنید.&lt;br /&gt;
* از نام‌گذاری واضح برای کلاس‌ها و idها استفاده کنید (مثلاً &amp;lt;code style=&amp;quot;direction:ltr;&amp;quot;&amp;gt;main-header&amp;lt;/code&amp;gt; به‌جای &amp;lt;code style=&amp;quot;direction:ltr;&amp;quot;&amp;gt;div1&amp;lt;/code&amp;gt;).&lt;br /&gt;
* کد JavaScript را در انتهای body یا با ویژگی &amp;lt;code style=&amp;quot;direction:ltr;&amp;quot;&amp;gt;defer&amp;lt;/code&amp;gt; بارگذاری کنید تا سرعت نمایش اولیهٔ صفحه بهتر شود.&lt;br /&gt;
* از کنسول مرورگر (&amp;lt;code style=&amp;quot;direction:ltr;&amp;quot;&amp;gt;console.log()&amp;lt;/code&amp;gt;) برای دیباگ و بررسی مقادیر متغیرها استفاده کنید.&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.shakibaabutalebi.ir/index.php?title=%D8%B5%D9%81%D8%AD%D9%87%D9%94_%D8%A7%D8%B5%D9%84%DB%8C&amp;diff=25</id>
		<title>صفحهٔ اصلی</title>
		<link rel="alternate" type="text/html" href="https://wiki.shakibaabutalebi.ir/index.php?title=%D8%B5%D9%81%D8%AD%D9%87%D9%94_%D8%A7%D8%B5%D9%84%DB%8C&amp;diff=25"/>
		<updated>2026-09-06T07:34:02Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* موضوعات */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== به ویکی شکیبا خوش آمدید ==&lt;br /&gt;
&lt;br /&gt;
این ویکی، مرجع شخصی من برای ثبت و مرور آموخته‌هایی است که در مسیر یادگیری برنامه‌نویسی و طراحی وب جمع‌آوری کرده‌ام.&lt;br /&gt;
&lt;br /&gt;
== موضوعات ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;direction:rtl; width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! موضوع !! توضیح کوتاه&lt;br /&gt;
|-&lt;br /&gt;
| [[Git]] || سیستم کنترل نسخه؛ دستورات پایه، شاخه‌ها، ریموت، rebase و حل تعارض&lt;br /&gt;
|-&lt;br /&gt;
| [[WordPress]] || طراحی سایت با وردپرس؛ قالب، افزونه، سئو، امنیت و مدیریت محتوا&lt;br /&gt;
|-&lt;br /&gt;
| [[CMD]] || خط فرمان ویندوز؛ ناوبری، مدیریت فایل، شبکه و فایل‌های Batch&lt;br /&gt;
|-&lt;br /&gt;
| [[Prompt Engineering]] || اصول و تکنیک‌های نوشتن پرامپت برای مدل‌های هوش مصنوعی&lt;br /&gt;
|-&lt;br /&gt;
| [[HTML CSS JavaScript]] || طراحی سایت با HTML، CSS و JavaScript؛ ساختار، استایل‌دهی و تعامل صفحه&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== دربارهٔ این ویکی ==&lt;br /&gt;
&lt;br /&gt;
* هدف: ثبت منظم و قابل‌جستجوی آموخته‌ها به‌جای پراکنده بودن در یادداشت‌های مختلف&lt;br /&gt;
* زبان محتوا: فارسی&lt;br /&gt;
* ساختار هر صفحه: مفاهیم پایه، سپس دستورات/تکنیک‌ها در قالب جدول، و در پایان نکات و بهترین شیوه‌ها&lt;br /&gt;
&lt;br /&gt;
== آخرین تغییرات ==&lt;br /&gt;
&lt;br /&gt;
برای مشاهدهٔ آخرین ویرایش‌های انجام‌شده در ویکی، به [[Special:RecentChanges|تغییرات اخیر]] مراجعه کنید.&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.shakibaabutalebi.ir/index.php?title=Git&amp;diff=24</id>
		<title>Git</title>
		<link rel="alternate" type="text/html" href="https://wiki.shakibaabutalebi.ir/index.php?title=Git&amp;diff=24"/>
		<updated>2026-09-06T07:27:50Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Git چیست؟ ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Git&#039;&#039;&#039; یک سیستم کنترل نسخه (Version Control System) توزیع‌شده است که برای ردیابی تغییرات در فایل‌ها و هماهنگی کار بین چند نفر روی یک پروژه استفاده می‌شود. با Git می‌توان تاریخچهٔ کامل تغییرات یک پروژه را نگه داشت، به نسخه‌های قبلی بازگشت، و به‌صورت هم‌زمان با دیگران روی بخش‌های مختلف یک پروژه کار کرد.&lt;br /&gt;
&lt;br /&gt;
== مفاهیم پایه ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Repository (مخزن)&#039;&#039;&#039;: پوشه‌ای که Git تاریخچهٔ تغییرات آن را ردیابی می‌کند.&lt;br /&gt;
* &#039;&#039;&#039;Working Directory&#039;&#039;&#039;: فایل‌های واقعی روی سیستم که در حال ویرایش آن‌ها هستید.&lt;br /&gt;
* &#039;&#039;&#039;Staging Area (Index)&#039;&#039;&#039;: فضای واسط بین Working Directory و مخزن؛ فایل‌هایی که آماده‌ی ثبت (commit) هستند.&lt;br /&gt;
* &#039;&#039;&#039;Commit&#039;&#039;&#039;: یک نقطهٔ ذخیرهٔ دائمی در تاریخچهٔ پروژه، مثل عکس لحظه‌ای از وضعیت فایل‌ها.&lt;br /&gt;
* &#039;&#039;&#039;Branch (شاخه)&#039;&#039;&#039;: یک مسیر جداگانه برای توسعه، بدون تأثیر روی نسخهٔ اصلی.&lt;br /&gt;
* &#039;&#039;&#039;HEAD&#039;&#039;&#039;: اشاره‌گری به آخرین commit در شاخه‌ای که در حال حاضر روی آن هستید.&lt;br /&gt;
* &#039;&#039;&#039;Merge&#039;&#039;&#039;: ترکیب کردن تغییرات دو شاخه با هم.&lt;br /&gt;
* &#039;&#039;&#039;Remote&#039;&#039;&#039;: نسخه‌ای از مخزن که روی یک سرور (مثل GitHub، GitLab) قرار دارد.&lt;br /&gt;
* &#039;&#039;&#039;Clone&#039;&#039;&#039;: کپی کامل یک مخزن از راه دور روی سیستم شما.&lt;br /&gt;
&lt;br /&gt;
== نصب و تنظیمات اولیه ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;direction:rtl; width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! توضیح !! دستور&lt;br /&gt;
|-&lt;br /&gt;
| بررسی نصب بودن Git و نسخهٔ آن || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git --version&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| تنظیم نام کاربری (سراسری) || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git config --global user.name &amp;quot;نام شما&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| تنظیم ایمیل (سراسری) || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git config --global user.email &amp;quot;email@example.com&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| مشاهدهٔ تمام تنظیمات فعلی || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git config --list&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== شروع کار ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;direction:rtl; width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! توضیح !! دستور&lt;br /&gt;
|-&lt;br /&gt;
| ساخت یک مخزن جدید در پوشهٔ فعلی || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git init&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| کپی کردن یک مخزن از راه دور || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git clone [آدرس]&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| کپی کردن مخزن در یک پوشهٔ مشخص || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git clone [آدرس] [نام پوشه]&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== ثبت تغییرات ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;direction:rtl; width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! توضیح !! دستور&lt;br /&gt;
|-&lt;br /&gt;
| نمایش وضعیت فایل‌ها || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git status&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| اضافه کردن فایل به staging area || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git add [نام فایل]&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| اضافه کردن همهٔ فایل‌های تغییر یافته || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git add .&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| ثبت یک commit با توضیح || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git commit -m &amp;quot;پیام&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| اضافه کردن و ثبت هم‌زمان (فایل‌های ردیابی‌شده) || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git commit -am &amp;quot;پیام&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| اصلاح آخرین commit || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git commit --amend&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== مشاهدهٔ تاریخچه و تغییرات ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;direction:rtl; width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! توضیح !! دستور&lt;br /&gt;
|-&lt;br /&gt;
| نمایش تاریخچهٔ commit‌ها || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git log&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| نمایش خلاصه و یک‌خطی تاریخچه || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git log --oneline&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| نمایش تفاوت فایل‌های تغییر یافته (قبل از add) || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git diff&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| نمایش تفاوت فایل‌های staged || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git diff --staged&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| نمایش جزئیات یک commit خاص || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git show [commit-id]&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== کار با شاخه‌ها (Branch) ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;direction:rtl; width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! توضیح !! دستور&lt;br /&gt;
|-&lt;br /&gt;
| نمایش لیست شاخه‌ها || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git branch&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| ساخت شاخهٔ جدید || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git branch [نام]&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| رفتن به یک شاخه || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git checkout [نام]&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| رفتن به یک شاخه (روش جدیدتر) || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git switch [نام]&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| ساخت و رفتن به شاخهٔ جدید هم‌زمان || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git checkout -b [نام]&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| ادغام یک شاخه با شاخهٔ فعلی || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git merge [نام شاخه]&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| حذف یک شاخه || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git branch -d [نام]&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| حذف اجباری یک شاخهٔ ادغام‌نشده || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git branch -D [نام]&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== کار با ریموت (GitHub و مشابه) ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;direction:rtl; width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! توضیح !! دستور&lt;br /&gt;
|-&lt;br /&gt;
| اتصال به مخزن راه دور || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git remote add origin [آدرس]&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| نمایش لیست ریموت‌ها || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git remote -v&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| ارسال تغییرات به سرور || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git push origin [شاخه]&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| ارسال شاخهٔ جدید و تنظیم ردیابی آن || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git push -u origin [شاخه]&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| دریافت و ادغام تغییرات از سرور || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git pull origin [شاخه]&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| فقط دریافت تغییرات بدون ادغام || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git fetch origin&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== بازگشت و لغو تغییرات ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;direction:rtl; width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! توضیح !! دستور&lt;br /&gt;
|-&lt;br /&gt;
| لغو تغییرات یک فایل در Working Directory || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git checkout -- [فایل]&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| لغو تغییرات با دستور جدیدتر || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git restore [فایل]&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| خارج کردن فایل از staging area || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git reset [فایل]&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| بازگشت کامل به یک commit قبلی (خطرناک) || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git reset --hard [commit-id]&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| ساخت یک commit جدید که یک commit قبلی را خنثی می‌کند || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git revert [commit-id]&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Stash (ذخیرهٔ موقت تغییرات) ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;direction:rtl; width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! توضیح !! دستور&lt;br /&gt;
|-&lt;br /&gt;
| ذخیرهٔ موقت تغییرات فعلی || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git stash&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| نمایش لیست stash‌ها || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git stash list&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| بازگردانی آخرین stash || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git stash pop&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| حذف آخرین stash بدون بازگردانی || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git stash drop&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== برچسب‌گذاری (Tag) ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;direction:rtl; width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! توضیح !! دستور&lt;br /&gt;
|-&lt;br /&gt;
| ساخت یک تگ ساده || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git tag [نام]&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| ساخت تگ با توضیح || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git tag -a [نام] -m &amp;quot;پیام&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| نمایش لیست تگ‌ها || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git tag&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| ارسال تگ‌ها به سرور || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git push origin --tags&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Rebase و Cherry-pick ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;direction:rtl; width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! توضیح !! دستور&lt;br /&gt;
|-&lt;br /&gt;
| اعمال دوبارهٔ commit‌های شاخهٔ فعلی روی شاخهٔ دیگر || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git rebase [نام شاخه]&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| rebase تعاملی برای ویرایش/ترکیب چند commit || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git rebase -i HEAD~[تعداد]&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| انتخاب و اعمال یک commit خاص از شاخهٔ دیگر || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git cherry-pick [commit-id]&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== حل تعارض (Merge Conflict) ==&lt;br /&gt;
&lt;br /&gt;
وقتی دو شاخه تغییرات متفاوتی روی یک بخش از یک فایل داشته باشند، هنگام merge یا rebase تعارض (conflict) رخ می‌دهد. Git خطوط متعارض را با نشانه‌های زیر در فایل مشخص می‌کند:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;direction:ltr; text-align:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt; HEAD&lt;br /&gt;
محتوای شاخهٔ فعلی&lt;br /&gt;
=======&lt;br /&gt;
محتوای شاخهٔ دیگر&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; نام-شاخه&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
برای حل تعارض باید فایل را به‌صورت دستی ویرایش کرد، نشانه‌ها را حذف کرد و نسخهٔ نهایی را انتخاب نمود، سپس:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;direction:rtl; width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! توضیح !! دستور&lt;br /&gt;
|-&lt;br /&gt;
| اضافه کردن فایل حل‌شده به staging || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git add [فایل]&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| ادامهٔ فرآیند merge || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git commit&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| ادامهٔ فرآیند rebase بعد از حل تعارض || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git rebase --continue&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| لغو کامل عملیات merge || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git merge --abort&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== فایل .gitignore ==&lt;br /&gt;
&lt;br /&gt;
فایل &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;.gitignore&amp;lt;/code&amp;gt; برای مشخص کردن فایل‌ها و پوشه‌هایی است که نباید توسط Git ردیابی شوند (مثل فایل‌های موقت، پوشهٔ &amp;lt;code style=&amp;quot;direction:ltr;&amp;quot;&amp;gt;node_modules&amp;lt;/code&amp;gt;، یا فایل‌های تنظیمات حساس).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;direction:ltr; text-align:left;&amp;quot;&amp;gt;&lt;br /&gt;
# نمونه محتوای .gitignore&lt;br /&gt;
node_modules/&lt;br /&gt;
.env&lt;br /&gt;
*.log&lt;br /&gt;
.DS_Store&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== نکات و بهترین شیوه‌ها ==&lt;br /&gt;
&lt;br /&gt;
* پیام commit‌ها را کوتاه، واضح و توصیفی بنویسید.&lt;br /&gt;
* هر commit باید یک تغییر منطقی و مستقل را نشان دهد، نه چند تغییر نامرتبط با هم.&lt;br /&gt;
* قبل از push کردن، همیشه با &amp;lt;code style=&amp;quot;direction:ltr;&amp;quot;&amp;gt;git pull&amp;lt;/code&amp;gt; آخرین تغییرات را دریافت کنید.&lt;br /&gt;
* از شاخه‌های جداگانه (feature branch) برای هر ویژگی یا رفع باگ استفاده کنید و شاخهٔ اصلی (main/master) را همیشه پایدار نگه دارید.&lt;br /&gt;
* پیش از rebase یا reset --hard، مطمئن شوید که تغییرات مهم را از دست نمی‌دهید.&lt;br /&gt;
&lt;br /&gt;
== GitHub چیست؟ ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;GitHub&#039;&#039;&#039; یک پلتفرم آنلاین میزبانی مخازن Git است که علاوه بر ذخیرهٔ کد، امکاناتی مثل همکاری تیمی، مدیریت باگ و درخواست، و بررسی کد را فراهم می‌کند. مخزن‌های محلی که با Git می‌سازید را می‌توان روی GitHub آپلود (push) کرد تا دیگران هم بتوانند به آن دسترسی داشته باشند یا در توسعهٔ آن مشارکت کنند.&lt;br /&gt;
&lt;br /&gt;
== مفاهیم پایه در GitHub ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Repository (Repo)&#039;&#039;&#039;: یک پروژه که روی GitHub میزبانی می‌شود.&lt;br /&gt;
* &#039;&#039;&#039;Fork&#039;&#039;&#039;: کپی کردن یک مخزن دیگران به حساب خودتان، برای اعمال تغییرات بدون تأثیر روی نسخهٔ اصلی.&lt;br /&gt;
* &#039;&#039;&#039;Pull Request (PR)&#039;&#039;&#039;: درخواست رسمی برای ادغام تغییرات شما با مخزن اصلی؛ معمولاً همراه با بررسی کد توسط دیگران.&lt;br /&gt;
* &#039;&#039;&#039;Issue&#039;&#039;&#039;: ثبت باگ، درخواست ویژگی جدید، یا هر بحث مرتبط با پروژه.&lt;br /&gt;
* &#039;&#039;&#039;Star&#039;&#039;&#039;: نشان‌دار کردن یک مخزن به‌عنوان علاقه‌مندی یا نشانه‌ای از محبوبیت آن.&lt;br /&gt;
* &#039;&#039;&#039;Watch&#039;&#039;&#039;: دریافت اعلان از فعالیت‌های یک مخزن.&lt;br /&gt;
* &#039;&#039;&#039;README.md&#039;&#039;&#039;: فایلی که معمولاً توضیحات کلی پروژه (نحوهٔ نصب، استفاده، مشارکت) را در خود دارد و در صفحهٔ اصلی مخزن نمایش داده می‌شود.&lt;br /&gt;
* &#039;&#039;&#039;GitHub Actions&#039;&#039;&#039;: ابزار اتوماسیون (CI/CD) برای اجرای خودکار تست‌ها، ساخت پروژه یا استقرار (Deploy) پس از هر push.&lt;br /&gt;
* &#039;&#039;&#039;Organization&#039;&#039;&#039;: فضایی برای مدیریت چند مخزن و چند عضو تیم زیر یک نام مشترک.&lt;br /&gt;
&lt;br /&gt;
== ساخت حساب و مخزن جدید ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;direction:rtl; width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! توضیح !! مسیر&lt;br /&gt;
|-&lt;br /&gt;
| ساخت حساب کاربری || از github.com روی Sign up بزنید&lt;br /&gt;
|-&lt;br /&gt;
| ساخت مخزن جدید || دکمهٔ + بالای صفحه سپس New repository&lt;br /&gt;
|-&lt;br /&gt;
| انتخاب Public یا Private || هنگام ساخت مخزن مشخص می‌شود؛ Public برای همه قابل‌مشاهده، Private فقط برای اعضای مجاز&lt;br /&gt;
|-&lt;br /&gt;
| اضافه کردن README هنگام ساخت || تیک گزینهٔ &amp;quot;Add a README file&amp;quot; را در فرم ساخت مخزن بزنید&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== اتصال پروژهٔ محلی به GitHub ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;direction:rtl; width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! توضیح !! دستور&lt;br /&gt;
|-&lt;br /&gt;
| اتصال مخزن محلی به یک مخزن خالی روی GitHub || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git remote add origin [آدرس مخزن]&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| تغییر نام شاخهٔ اصلی به main (در صورت نیاز) || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git branch -M main&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| ارسال اولین نسخه به GitHub || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git push -u origin main&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| کلون کردن یک مخزن از GitHub || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git clone [آدرس مخزن]&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== احراز هویت (Authentication) ==&lt;br /&gt;
&lt;br /&gt;
از سال ۲۰۲۱ به بعد، GitHub دیگر اجازهٔ استفاده از رمز عبور معمولی برای عملیات Git (مثل push) را نمی‌دهد. به‌جای آن باید از یکی از روش‌های زیر استفاده کنید:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;direction:rtl; width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! روش !! توضیح&lt;br /&gt;
|-&lt;br /&gt;
| Personal Access Token (PAT) || از Settings &amp;gt; Developer settings &amp;gt; Personal access tokens توکن بسازید و به‌جای رمز عبور هنگام push استفاده کنید&lt;br /&gt;
|-&lt;br /&gt;
| SSH Key || یک جفت کلید SSH بسازید و کلید عمومی را در Settings &amp;gt; SSH and GPG keys ثبت کنید تا نیازی به وارد کردن رمز نباشد&lt;br /&gt;
|-&lt;br /&gt;
| GitHub CLI (gh) || ابزار خط فرمان رسمی گیت‌هاب که احراز هویت را ساده‌تر می‌کند&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ساخت و استفاده از کلید SSH:&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;direction:rtl; width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! توضیح !! دستور&lt;br /&gt;
|-&lt;br /&gt;
| ساخت جفت کلید SSH جدید || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;ssh-keygen -t ed25519 -C &amp;quot;email@example.com&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| نمایش کلید عمومی برای کپی کردن || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;cat ~/.ssh/id_ed25519.pub&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| تست اتصال SSH به GitHub || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;ssh -T git@github.com&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| استفاده از آدرس SSH به‌جای HTTPS برای ریموت || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git remote set-url origin git@github.com:username/repo.git&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== جریان کار Fork و Pull Request ==&lt;br /&gt;
&lt;br /&gt;
روش معمول مشارکت در پروژه‌های دیگران روی GitHub:&lt;br /&gt;
&lt;br /&gt;
# روی دکمهٔ &#039;&#039;&#039;Fork&#039;&#039;&#039; در صفحهٔ مخزن اصلی بزنید تا یک کپی از آن به حساب شما اضافه شود.&lt;br /&gt;
# نسخهٔ fork‌شده را روی سیستم خودتان clone کنید.&lt;br /&gt;
# یک شاخهٔ جدید بسازید و تغییرات موردنظر را اعمال و commit کنید.&lt;br /&gt;
# تغییرات را به fork خودتان روی GitHub push کنید.&lt;br /&gt;
# از صفحهٔ مخزن، دکمهٔ &#039;&#039;&#039;New Pull Request&#039;&#039;&#039; را بزنید تا درخواست ادغام تغییرات به مخزن اصلی ارسال شود.&lt;br /&gt;
# مالک مخزن اصلی تغییرات را بررسی می‌کند و در صورت تأیید، آن را merge می‌کند.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;direction:rtl; width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! توضیح !! دستور&lt;br /&gt;
|-&lt;br /&gt;
| اضافه کردن مخزن اصلی به‌عنوان یک ریموت دوم (برای هماهنگی با آپدیت‌های اصلی) || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git remote add upstream [آدرس مخزن اصلی]&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| دریافت آخرین تغییرات مخزن اصلی || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git fetch upstream&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| ادغام تغییرات مخزن اصلی با شاخهٔ فعلی || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git merge upstream/main&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== مدیریت Issue و پروژه ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;direction:rtl; width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! توضیح !! مسیر&lt;br /&gt;
|-&lt;br /&gt;
| ثبت یک Issue جدید || تب Issues در صفحهٔ مخزن، سپس New issue&lt;br /&gt;
|-&lt;br /&gt;
| اتصال یک Pull Request به یک Issue (بستن خودکار آن) || در توضیح PR بنویسید &amp;lt;code style=&amp;quot;direction:ltr;&amp;quot;&amp;gt;Closes #شماره‌ایشو&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| استفاده از برچسب (Label) برای دسته‌بندی Issue‌ها || داخل صفحهٔ هر Issue، بخش Labels&lt;br /&gt;
|-&lt;br /&gt;
| مدیریت وظایف با تخته‌ی کانبان || تب Projects در صفحهٔ مخزن یا سازمان&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== فایل‌های مهم در یک مخزن GitHub ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;direction:rtl; width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! فایل !! کاربرد&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;direction:ltr;&amp;quot;&amp;gt;README.md&amp;lt;/code&amp;gt; || توضیح کلی پروژه، نحوهٔ نصب و استفاده&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;direction:ltr;&amp;quot;&amp;gt;.gitignore&amp;lt;/code&amp;gt; || مشخص کردن فایل‌هایی که نباید ردیابی شوند&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;direction:ltr;&amp;quot;&amp;gt;LICENSE&amp;lt;/code&amp;gt; || مجوز استفاده و توزیع پروژه&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;direction:ltr;&amp;quot;&amp;gt;.github/workflows/&amp;lt;/code&amp;gt; || فایل‌های تنظیمات GitHub Actions برای اجرای خودکار CI/CD&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code style=&amp;quot;direction:ltr;&amp;quot;&amp;gt;CONTRIBUTING.md&amp;lt;/code&amp;gt; || راهنمای نحوهٔ مشارکت در پروژه برای دیگران&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== نکات و بهترین شیوه‌ها (GitHub) ==&lt;br /&gt;
&lt;br /&gt;
* همیشه یک فایل README واضح و کامل برای پروژه بنویسید تا دیگران سریع بفهمند پروژه چیست و چطور استفاده می‌شود.&lt;br /&gt;
* برای پروژه‌های عمومی، یک فایل LICENSE مناسب انتخاب کنید تا شرایط استفاده از کد مشخص باشد.&lt;br /&gt;
* از SSH به‌جای HTTPS برای اتصال استفاده کنید تا نیازی به وارد کردن توکن در هر push نباشد.&lt;br /&gt;
* برای هر ویژگی یا رفع باگ، یک شاخهٔ جداگانه بسازید و از طریق Pull Request به شاخهٔ اصلی merge کنید، نه push مستقیم.&lt;br /&gt;
* توضیحات Pull Request و Commit را واضح بنویسید تا بررسی کد برای دیگران ساده‌تر باشد.&lt;br /&gt;
* از قابلیت GitHub Actions برای اجرای خودکار تست‌ها پیش از merge استفاده کنید تا کیفیت کد حفظ شود.&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.shakibaabutalebi.ir/index.php?title=CMD&amp;diff=23</id>
		<title>CMD</title>
		<link rel="alternate" type="text/html" href="https://wiki.shakibaabutalebi.ir/index.php?title=CMD&amp;diff=23"/>
		<updated>2026-09-06T07:13:45Z</updated>

		<summary type="html">&lt;p&gt;Admin: صفحه‌ای تازه حاوی «== CMD چیست؟ ==  &amp;#039;&amp;#039;&amp;#039;CMD (Command Prompt)&amp;#039;&amp;#039;&amp;#039; یک رابط خط فرمان (Command Line Interface) در سیستم‌عامل ویندوز است که با نوشتن دستورات متنی، امکان اجرای عملیات مختلف (مدیریت فایل‌ها، شبکه، سیستم و...) را بدون نیاز به رابط گرافیکی فراهم می‌کند. نسخهٔ پیشرفته‌تر آن &amp;#039;&amp;#039;&amp;#039;PowerShell&amp;#039;&amp;#039;&amp;#039;...» ایجاد کرد&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== CMD چیست؟ ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;CMD (Command Prompt)&#039;&#039;&#039; یک رابط خط فرمان (Command Line Interface) در سیستم‌عامل ویندوز است که با نوشتن دستورات متنی، امکان اجرای عملیات مختلف (مدیریت فایل‌ها، شبکه، سیستم و...) را بدون نیاز به رابط گرافیکی فراهم می‌کند. نسخهٔ پیشرفته‌تر آن &#039;&#039;&#039;PowerShell&#039;&#039;&#039; است که قابلیت‌های بیشتری دارد.&lt;br /&gt;
&lt;br /&gt;
== باز کردن CMD ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;direction:rtl; width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! توضیح !! روش&lt;br /&gt;
|-&lt;br /&gt;
| باز کردن ساده || کلید Win را بزنید، بنویسید cmd و Enter بزنید&lt;br /&gt;
|-&lt;br /&gt;
| باز کردن با دسترسی مدیر (Administrator) || جستجوی cmd، سپس کلیک راست و انتخاب Run as administrator&lt;br /&gt;
|-&lt;br /&gt;
| باز کردن از مسیر یک پوشهٔ خاص || در File Explorer داخل پوشه، در نوار آدرس بنویسید cmd و Enter بزنید&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== مفاهیم پایه ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Path (مسیر)&#039;&#039;&#039;: آدرس یک فایل یا پوشه در سیستم، مثل &amp;lt;code style=&amp;quot;direction:ltr;&amp;quot;&amp;gt;C:\Users\Name&amp;lt;/code&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Directory (دایرکتوری)&#039;&#039;&#039;: معادل پوشه (Folder)&lt;br /&gt;
* &#039;&#039;&#039;Argument / Parameter&#039;&#039;&#039;: مقادیر اضافه که همراه یک دستور نوشته می‌شوند تا رفتار آن را مشخص کنند&lt;br /&gt;
* &#039;&#039;&#039;Flag / Switch&#039;&#039;&#039;: گزینه‌های اختیاری یک دستور، معمولاً با علامت &amp;lt;code style=&amp;quot;direction:ltr;&amp;quot;&amp;gt;/&amp;lt;/code&amp;gt; نوشته می‌شوند (مثل &amp;lt;code style=&amp;quot;direction:ltr;&amp;quot;&amp;gt;/?&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &#039;&#039;&#039;Environment Variable (متغیر محیطی)&#039;&#039;&#039;: مقادیری که در سطح سیستم تعریف شده و توسط برنامه‌ها قابل استفاده‌اند (مثل &amp;lt;code style=&amp;quot;direction:ltr;&amp;quot;&amp;gt;PATH&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &#039;&#039;&#039;Batch File&#039;&#039;&#039;: فایلی با پسوند &amp;lt;code style=&amp;quot;direction:ltr;&amp;quot;&amp;gt;.bat&amp;lt;/code&amp;gt; که مجموعه‌ای از دستورات CMD را به‌صورت خودکار اجرا می‌کند&lt;br /&gt;
&lt;br /&gt;
== ناوبری بین پوشه‌ها ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;direction:rtl; width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! توضیح !! دستور&lt;br /&gt;
|-&lt;br /&gt;
| نمایش مسیر فعلی || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;cd&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| رفتن به یک پوشهٔ مشخص || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;cd [مسیر]&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| رفتن به پوشهٔ بالاتر || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;cd ..&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| رفتن به ریشهٔ درایو فعلی || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;cd \&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| تغییر درایو (مثلاً به D) || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;D:&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| نمایش لیست فایل‌ها و پوشه‌ها || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;dir&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| پاک کردن صفحهٔ نمایش || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;cls&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| رفتن به یک پوشهٔ مشخص || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;cd [مسیر]&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| رفتن به پوشهٔ بالاتر || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;cd ..&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| رفتن دو سطح بالاتر || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;cd ..\..&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| رفتن به ریشهٔ درایو فعلی || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;cd \&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| رفتن به پوشهٔ کاربری (Home) || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;cd %userprofile%&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| تغییر درایو (مثلاً به D) || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;D:&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| نمایش لیست فایل‌ها و پوشه‌ها || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;dir&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| نمایش لیست به همراه زیرپوشه‌ها || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;dir /s&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| نمایش فقط نام فایل‌ها (بدون جزئیات) || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;dir /b&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| نمایش فایل‌های مخفی هم || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;dir /a&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| پاک کردن صفحهٔ نمایش || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;cls&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| نمایش تاریخچهٔ دستورات اجراشده در همین پنجره || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;doskey /history&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| رفتن به دستور قبلی (بدون تایپ دوباره) || کلید جهت‌دار بالا (↑)&lt;br /&gt;
|-&lt;br /&gt;
| تکمیل خودکار نام فایل/پوشه || کلید Tab&lt;br /&gt;
|}&lt;br /&gt;
== مدیریت فایل‌ها و پوشه‌ها ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;direction:rtl; width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! توضیح !! دستور&lt;br /&gt;
|-&lt;br /&gt;
| ساخت پوشهٔ جدید || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;mkdir [نام]&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| حذف یک پوشهٔ خالی || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;rmdir [نام]&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| حذف یک پوشه به همراه محتویات آن || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;rmdir /s /q [نام]&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| حذف یک فایل || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;del [نام فایل]&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| کپی کردن فایل || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;copy [مبدأ] [مقصد]&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| کپی کردن یک پوشه به همراه زیرپوشه‌ها || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;xcopy [مبدأ] [مقصد] /E /I&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| انتقال یا تغییر نام فایل/پوشه || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;move [مبدأ] [مقصد]&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| تغییر نام فایل || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;ren [نام قدیم] [نام جدید]&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| نمایش محتویات یک فایل متنی || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;type [نام فایل]&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| ساخت یک فایل متنی خالی || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;echo. &amp;gt; [نام فایل]&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== اطلاعات سیستم ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;direction:rtl; width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! توضیح !! دستور&lt;br /&gt;
|-&lt;br /&gt;
| نمایش اطلاعات کامل سیستم‌عامل و سخت‌افزار || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;systeminfo&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| نمایش نسخهٔ ویندوز || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;ver&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| نمایش لیست فرآیندهای در حال اجرا || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;tasklist&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| متوقف کردن یک فرآیند با نام || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;taskkill /IM [نام] /F&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| متوقف کردن یک فرآیند با شناسه (PID) || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;taskkill /PID [شماره] /F&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| مشاهدهٔ فضای خالی و مصرفی دیسک || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;wmic logicaldisk get size,freespace,caption&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== شبکه ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;direction:rtl; width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! توضیح !! دستور&lt;br /&gt;
|-&lt;br /&gt;
| نمایش تنظیمات شبکه (IP، Gateway و...) || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;ipconfig&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| نمایش اطلاعات کامل و پیشرفتهٔ شبکه || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;ipconfig /all&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| تست اتصال به یک آدرس || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;ping [آدرس یا IP]&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| ردیابی مسیر بستهٔ اطلاعاتی تا مقصد || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;tracert [آدرس]&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| نمایش اطلاعات DNS یک دامنه || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;nslookup [دامنه]&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| پاک کردن کش DNS || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;ipconfig /flushdns&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| نمایش اتصالات فعال شبکه و پورت‌ها || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;netstat -an&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== کاربران و دسترسی‌ها ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;direction:rtl; width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! توضیح !! دستور&lt;br /&gt;
|-&lt;br /&gt;
| نمایش نام کاربری فعلی || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;whoami&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| نمایش لیست کاربران سیستم || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;net user&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| ساخت کاربر جدید || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;net user [نام] [رمز] /add&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| تغییر رمز عبور یک کاربر || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;net user [نام] [رمز جدید]&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== دستورات پرکاربرد دیگر ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;direction:rtl; width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! توضیح !! دستور&lt;br /&gt;
|-&lt;br /&gt;
| نمایش راهنمای یک دستور || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;[دستور] /?&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| نمایش لیست تمام دستورات موجود || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;help&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| اجرای یک برنامه با نام || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;start [نام برنامه]&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| خروج از CMD || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;exit&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| باز کردن ابزار ویرایش رجیستری || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;regedit&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| اجرای ابزار مدیریت دیسک || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;diskmgmt.msc&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== نوشتن فایل Batch (.bat) ==&lt;br /&gt;
&lt;br /&gt;
فایل‌های &amp;lt;code style=&amp;quot;direction:ltr;&amp;quot;&amp;gt;.bat&amp;lt;/code&amp;gt; برای اجرای خودکار مجموعه‌ای از دستورات CMD استفاده می‌شوند. نمونه‌ای ساده:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;direction:ltr; text-align:left;&amp;quot;&amp;gt;&lt;br /&gt;
@echo off&lt;br /&gt;
echo Hello, this is a batch file!&lt;br /&gt;
mkdir NewFolder&lt;br /&gt;
cd NewFolder&lt;br /&gt;
echo Done!&lt;br /&gt;
pause&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
توضیح خطوط:&lt;br /&gt;
* &amp;lt;code style=&amp;quot;direction:ltr;&amp;quot;&amp;gt;@echo off&amp;lt;/code&amp;gt;: از نمایش خود دستورات در خروجی جلوگیری می‌کند.&lt;br /&gt;
* &amp;lt;code style=&amp;quot;direction:ltr;&amp;quot;&amp;gt;pause&amp;lt;/code&amp;gt;: اجرای فایل را متوقف می‌کند تا کاربر یک کلید بزند (برای دیدن خروجی).&lt;br /&gt;
&lt;br /&gt;
== نکات و بهترین شیوه‌ها ==&lt;br /&gt;
&lt;br /&gt;
* قبل از استفاده از دستورات حذف (&amp;lt;code style=&amp;quot;direction:ltr;&amp;quot;&amp;gt;del&amp;lt;/code&amp;gt;، &amp;lt;code style=&amp;quot;direction:ltr;&amp;quot;&amp;gt;rmdir /s&amp;lt;/code&amp;gt;)، از مسیر و نام فایل/پوشه مطمئن شوید؛ این عملیات‌ها معمولاً قابل بازگشت نیستند.&lt;br /&gt;
* برای اجرای دستوراتی که نیاز به دسترسی سطح بالا دارند (مثل تغییر تنظیمات شبکه یا سیستم)، CMD را با «Run as administrator» باز کنید.&lt;br /&gt;
* از تکمیل خودکار مسیرها با کلید Tab استفاده کنید تا از اشتباه تایپی جلوگیری شود.&lt;br /&gt;
* برای مسیرهایی که فاصله دارند، آن‌ها را داخل گیومه بگذارید، مثل &amp;lt;code style=&amp;quot;direction:ltr;&amp;quot;&amp;gt;cd &amp;quot;C:\My Folder&amp;quot;&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.shakibaabutalebi.ir/index.php?title=WordPress&amp;diff=22</id>
		<title>WordPress</title>
		<link rel="alternate" type="text/html" href="https://wiki.shakibaabutalebi.ir/index.php?title=WordPress&amp;diff=22"/>
		<updated>2026-09-06T07:10:02Z</updated>

		<summary type="html">&lt;p&gt;Admin: صفحه‌ای تازه حاوی «== وردپرس چیست؟ ==  &amp;#039;&amp;#039;&amp;#039;وردپرس (WordPress)&amp;#039;&amp;#039;&amp;#039; یک سیستم مدیریت محتوا (CMS) متن‌باز است که با زبان PHP نوشته شده و از پایگاه‌داده MySQL/MariaDB استفاده می‌کند. با وردپرس می‌توان بدون نیاز به دانش برنامه‌نویسی عمیق، انواع وب‌سایت (وبلاگ، فروشگاه، سایت شرکتی، پورت...» ایجاد کرد&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== وردپرس چیست؟ ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;وردپرس (WordPress)&#039;&#039;&#039; یک سیستم مدیریت محتوا (CMS) متن‌باز است که با زبان PHP نوشته شده و از پایگاه‌داده MySQL/MariaDB استفاده می‌کند. با وردپرس می‌توان بدون نیاز به دانش برنامه‌نویسی عمیق، انواع وب‌سایت (وبلاگ، فروشگاه، سایت شرکتی، پورتفولیو و...) ساخت. حدود ۴۰٪ از وب‌سایت‌های جهان با وردپرس ساخته شده‌اند.&lt;br /&gt;
&lt;br /&gt;
== مفاهیم پایه ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Theme (قالب)&#039;&#039;&#039;: ظاهر و چیدمان بصری سایت را مشخص می‌کند.&lt;br /&gt;
* &#039;&#039;&#039;Plugin (افزونه)&#039;&#039;&#039;: قابلیت‌های جدید به سایت اضافه می‌کند (فرم تماس، فروشگاه، سئو و...).&lt;br /&gt;
* &#039;&#039;&#039;Post (نوشته)&#039;&#039;&#039;: محتوای وبلاگی که معمولاً بر اساس تاریخ مرتب می‌شود.&lt;br /&gt;
* &#039;&#039;&#039;Page (برگه)&#039;&#039;&#039;: محتوای ثابت مثل «دربارهٔ ما» یا «تماس با ما».&lt;br /&gt;
* &#039;&#039;&#039;Widget (ابزارک)&#039;&#039;&#039;: بلوک‌های کوچک محتوایی که در نوار کناری یا فوتر قرار می‌گیرند.&lt;br /&gt;
* &#039;&#039;&#039;Menu (منو)&#039;&#039;&#039;: ساختار ناوبری سایت.&lt;br /&gt;
* &#039;&#039;&#039;wp-admin&#039;&#039;&#039;: پنل مدیریت وردپرس.&lt;br /&gt;
* &#039;&#039;&#039;Child Theme (قالب فرزند)&#039;&#039;&#039;: قالبی که از یک قالب اصلی ارث‌بری می‌کند تا تغییرات سفارشی بدون از دست رفتن در آپدیت باقی بماند.&lt;br /&gt;
* &#039;&#039;&#039;Shortcode&#039;&#039;&#039;: کدهای کوتاه بین کروشه برای افزودن قابلیت خاص داخل محتوا، مثل &amp;lt;code style=&amp;quot;direction:ltr;&amp;quot;&amp;gt;[gallery]&amp;lt;/code&amp;gt;.&lt;br /&gt;
* &#039;&#039;&#039;Custom Post Type&#039;&#039;&#039;: نوع محتوای سفارشی غیر از پست و برگهٔ پیش‌فرض (مثل «محصول» یا «نمونه‌کار»).&lt;br /&gt;
&lt;br /&gt;
== نصب و راه‌اندازی ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;direction:rtl; width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! توضیح !! جزئیات&lt;br /&gt;
|-&lt;br /&gt;
| نیازمندی‌های سرور || PHP نسخهٔ ۷.۴ یا بالاتر، MySQL 5.7+ یا MariaDB 10.3+&lt;br /&gt;
|-&lt;br /&gt;
| نصب یک‌کلیکی (اکثر هاست‌ها) || از پنل هاست (مثل Plesk یا cPanel) گزینهٔ نصب وردپرس را انتخاب کنید&lt;br /&gt;
|-&lt;br /&gt;
| نصب دستی || دانلود فایل‌ها از wordpress.org، آپلود به هاست، ساخت پایگاه‌داده، اجرای مراحل نصب از مرورگر&lt;br /&gt;
|-&lt;br /&gt;
| آدرس پنل مدیریت || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;yoursite.com/wp-admin&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== ساختار پوشه‌ها و فایل‌های مهم ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;direction:rtl; width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! توضیح !! مسیر/فایل&lt;br /&gt;
|-&lt;br /&gt;
| فایل تنظیمات اصلی (اتصال به دیتابیس) || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;wp-config.php&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| پوشهٔ قالب‌ها || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;wp-content/themes/&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| پوشهٔ افزونه‌ها || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;wp-content/plugins/&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| پوشهٔ فایل‌های آپلودی (تصاویر و رسانه) || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;wp-content/uploads/&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| فایل تنظیمات لینک‌ها و ریدایرکت || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;.htaccess&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== مدیریت قالب (Theme) ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;direction:rtl; width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! توضیح !! مسیر در پنل مدیریت&lt;br /&gt;
|-&lt;br /&gt;
| نصب و تغییر قالب || Appearance &amp;gt; Themes&lt;br /&gt;
|-&lt;br /&gt;
| شخصی‌سازی زندهٔ سایت (رنگ، لوگو، منو) || Appearance &amp;gt; Customize&lt;br /&gt;
|-&lt;br /&gt;
| ویرایش کدهای قالب (فایل‌های PHP/CSS) || Appearance &amp;gt; Theme File Editor&lt;br /&gt;
|-&lt;br /&gt;
| ساخت قالب فرزند (روش امن‌تر برای شخصی‌سازی) || باید دستی با فایل &amp;lt;code style=&amp;quot;direction:ltr;&amp;quot;&amp;gt;style.css&amp;lt;/code&amp;gt; و &amp;lt;code style=&amp;quot;direction:ltr;&amp;quot;&amp;gt;functions.php&amp;lt;/code&amp;gt; ساخته شود&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== مدیریت افزونه‌ها (Plugins) ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;direction:rtl; width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! توضیح !! مسیر در پنل مدیریت&lt;br /&gt;
|-&lt;br /&gt;
| نصب افزونهٔ جدید || Plugins &amp;gt; Add New&lt;br /&gt;
|-&lt;br /&gt;
| فعال/غیرفعال کردن افزونه || Plugins &amp;gt; Installed Plugins&lt;br /&gt;
|-&lt;br /&gt;
| به‌روزرسانی افزونه‌ها || Plugins &amp;gt; Installed Plugins (اعلان آپدیت به‌صورت خودکار نمایش داده می‌شود)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;افزونه‌های پرکاربرد و معروف:&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Yoast SEO&#039;&#039;&#039; یا &#039;&#039;&#039;Rank Math&#039;&#039;&#039;: بهینه‌سازی سئو&lt;br /&gt;
* &#039;&#039;&#039;WooCommerce&#039;&#039;&#039;: ساخت فروشگاه آنلاین&lt;br /&gt;
* &#039;&#039;&#039;Elementor&#039;&#039;&#039; یا &#039;&#039;&#039;WPBakery&#039;&#039;&#039;: صفحه‌ساز بصری (Page Builder)&lt;br /&gt;
* &#039;&#039;&#039;Contact Form 7&#039;&#039;&#039; یا &#039;&#039;&#039;WPForms&#039;&#039;&#039;: ساخت فرم تماس&lt;br /&gt;
* &#039;&#039;&#039;UpdraftPlus&#039;&#039;&#039;: پشتیبان‌گیری خودکار&lt;br /&gt;
* &#039;&#039;&#039;WP Super Cache&#039;&#039;&#039; یا &#039;&#039;&#039;W3 Total Cache&#039;&#039;&#039;: افزایش سرعت سایت با کش&lt;br /&gt;
* &#039;&#039;&#039;Wordfence&#039;&#039;&#039;: امنیت سایت&lt;br /&gt;
&lt;br /&gt;
== مدیریت محتوا ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;direction:rtl; width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! توضیح !! مسیر در پنل مدیریت&lt;br /&gt;
|-&lt;br /&gt;
| نوشتن پست جدید (وبلاگ) || Posts &amp;gt; Add New&lt;br /&gt;
|-&lt;br /&gt;
| ساخت برگهٔ جدید (صفحهٔ ثابت) || Pages &amp;gt; Add New&lt;br /&gt;
|-&lt;br /&gt;
| مدیریت دسته‌بندی‌ها و برچسب‌ها || Posts &amp;gt; Categories / Tags&lt;br /&gt;
|-&lt;br /&gt;
| مدیریت رسانه (تصاویر، ویدیو) || Media &amp;gt; Library&lt;br /&gt;
|-&lt;br /&gt;
| مدیریت نظرات || Comments&lt;br /&gt;
|-&lt;br /&gt;
| ویرایشگر پیش‌فرض محتوا || Gutenberg (ویرایشگر بلوکی)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== منو و ناوبری ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;direction:rtl; width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! توضیح !! مسیر در پنل مدیریت&lt;br /&gt;
|-&lt;br /&gt;
| ساخت و مدیریت منوها || Appearance &amp;gt; Menus&lt;br /&gt;
|-&lt;br /&gt;
| تخصیص منو به موقعیت‌های قالب (هدر، فوتر) || در همان صفحهٔ Menus، بخش Menu Settings&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== کاربران و نقش‌ها ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;direction:rtl; width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! نقش !! سطح دسترسی&lt;br /&gt;
|-&lt;br /&gt;
| Administrator || دسترسی کامل به تمام بخش‌های سایت&lt;br /&gt;
|-&lt;br /&gt;
| Editor || مدیریت تمام پست‌ها و برگه‌ها (حتی نوشته‌های دیگران)&lt;br /&gt;
|-&lt;br /&gt;
| Author || نوشتن، ویرایش و انتشار پست‌های خودش&lt;br /&gt;
|-&lt;br /&gt;
| Contributor || نوشتن پست ولی بدون امکان انتشار مستقیم&lt;br /&gt;
|-&lt;br /&gt;
| Subscriber || فقط مدیریت پروفایل شخصی و مشاهدهٔ محتوا&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== سئو (SEO) پایه ==&lt;br /&gt;
&lt;br /&gt;
* استفاده از پیوندهای یکتا و خوانا (Permalink) از مسیر Settings &amp;gt; Permalinks (پیشنهاد: حالت Post name).&lt;br /&gt;
* نوشتن عنوان (Title) و توضیحات متا (Meta Description) مناسب برای هر صفحه با کمک افزونه‌هایی مثل Yoast SEO.&lt;br /&gt;
* استفاده از تصاویر بهینه‌شده (حجم کم) و متن جایگزین (Alt Text) برای هر تصویر.&lt;br /&gt;
* ساخت و ارسال نقشهٔ سایت (Sitemap) به گوگل سرچ کنسول.&lt;br /&gt;
* بهینه‌سازی سرعت سایت با کش، فشرده‌سازی تصاویر و انتخاب هاست مناسب.&lt;br /&gt;
&lt;br /&gt;
== امنیت و پشتیبان‌گیری ==&lt;br /&gt;
&lt;br /&gt;
* رمز عبور قوی برای وردپرس، دیتابیس و FTP انتخاب کنید و نام کاربری admin پیش‌فرض را تغییر دهید.&lt;br /&gt;
* وردپرس، قالب و افزونه‌ها را همیشه به‌روز نگه دارید.&lt;br /&gt;
* از افزونه‌های امنیتی (مثل Wordfence) برای محافظت در برابر حملات استفاده کنید.&lt;br /&gt;
* به‌صورت منظم از سایت و پایگاه‌داده پشتیبان (Backup) تهیه کنید (دستی یا با افزونه مثل UpdraftPlus).&lt;br /&gt;
* در صورت امکان، احراز هویت دومرحله‌ای (2FA) برای ورود به wp-admin فعال کنید.&lt;br /&gt;
&lt;br /&gt;
== مشکلات رایج و راه‌حل ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;direction:rtl; width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! مشکل !! راه‌حل&lt;br /&gt;
|-&lt;br /&gt;
| صفحهٔ سفید مرگ (White Screen of Death) || فعال‌سازی نمایش خطا در &amp;lt;code style=&amp;quot;direction:ltr;&amp;quot;&amp;gt;wp-config.php&amp;lt;/code&amp;gt; با &amp;lt;code style=&amp;quot;direction:ltr;&amp;quot;&amp;gt;WP_DEBUG&amp;lt;/code&amp;gt; و بررسی افزونه/قالب مشکل‌دار&lt;br /&gt;
|-&lt;br /&gt;
| خطای اتصال به پایگاه‌داده || بررسی صحت اطلاعات دیتابیس در &amp;lt;code style=&amp;quot;direction:ltr;&amp;quot;&amp;gt;wp-config.php&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| کندی سایت || فعال‌سازی کش، بهینه‌سازی تصاویر، انتخاب هاست بهتر، حذف افزونه‌های غیرضروری&lt;br /&gt;
|-&lt;br /&gt;
| قفل شدن دسترسی ادمین || تغییر رمز عبور از طریق phpMyAdmin در جدول &amp;lt;code style=&amp;quot;direction:ltr;&amp;quot;&amp;gt;wp_users&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== نکات و بهترین شیوه‌ها ==&lt;br /&gt;
&lt;br /&gt;
* همیشه پیش از هرگونه تغییر مهم (آپدیت، تغییر قالب)، یک نسخهٔ پشتیبان کامل تهیه کنید.&lt;br /&gt;
* از قالب فرزند (Child Theme) برای شخصی‌سازی استفاده کنید تا تغییرات با آپدیت قالب اصلی از بین نروند.&lt;br /&gt;
* تعداد افزونه‌ها را به حداقل لازم محدود کنید تا سرعت و امنیت سایت حفظ شود.&lt;br /&gt;
* افزونه‌ها و قالب‌ها را فقط از منابع معتبر (وردپرس رسمی یا فروشندگان شناخته‌شده) دریافت کنید.&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.shakibaabutalebi.ir/index.php?title=%D8%B5%D9%81%D8%AD%D9%87%D9%94_%D8%A7%D8%B5%D9%84%DB%8C&amp;diff=21</id>
		<title>صفحهٔ اصلی</title>
		<link rel="alternate" type="text/html" href="https://wiki.shakibaabutalebi.ir/index.php?title=%D8%B5%D9%81%D8%AD%D9%87%D9%94_%D8%A7%D8%B5%D9%84%DB%8C&amp;diff=21"/>
		<updated>2026-09-06T07:08:39Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== به ویکی شکیبا خوش آمدید ==&lt;br /&gt;
&lt;br /&gt;
این ویکی، مرجع شخصی من برای ثبت و مرور آموخته‌هایی است که در مسیر یادگیری برنامه‌نویسی و طراحی وب جمع‌آوری کرده‌ام.&lt;br /&gt;
&lt;br /&gt;
== موضوعات ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;direction:rtl; width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! موضوع !! توضیح کوتاه&lt;br /&gt;
|-&lt;br /&gt;
| [[Git]] || سیستم کنترل نسخه؛ دستورات پایه، شاخه‌ها، ریموت، rebase و حل تعارض&lt;br /&gt;
|-&lt;br /&gt;
| [[WordPress]] || طراحی سایت با وردپرس؛ قالب، افزونه، سئو، امنیت و مدیریت محتوا&lt;br /&gt;
|-&lt;br /&gt;
| [[CMD]] || خط فرمان ویندوز؛ ناوبری، مدیریت فایل، شبکه و فایل‌های Batch&lt;br /&gt;
|-&lt;br /&gt;
| [[Prompt Engineering]] || اصول و تکنیک‌های نوشتن پرامپت برای مدل‌های هوش مصنوعی&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== دربارهٔ این ویکی ==&lt;br /&gt;
&lt;br /&gt;
* هدف: ثبت منظم و قابل‌جستجوی آموخته‌ها به‌جای پراکنده بودن در یادداشت‌های مختلف&lt;br /&gt;
* زبان محتوا: فارسی&lt;br /&gt;
* ساختار هر صفحه: مفاهیم پایه، سپس دستورات/تکنیک‌ها در قالب جدول، و در پایان نکات و بهترین شیوه‌ها&lt;br /&gt;
&lt;br /&gt;
== آخرین تغییرات ==&lt;br /&gt;
&lt;br /&gt;
برای مشاهدهٔ آخرین ویرایش‌های انجام‌شده در ویکی، به [[Special:RecentChanges|تغییرات اخیر]] مراجعه کنید.&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.shakibaabutalebi.ir/index.php?title=Prompt_Engineering&amp;diff=20</id>
		<title>Prompt Engineering</title>
		<link rel="alternate" type="text/html" href="https://wiki.shakibaabutalebi.ir/index.php?title=Prompt_Engineering&amp;diff=20"/>
		<updated>2026-09-06T07:01:06Z</updated>

		<summary type="html">&lt;p&gt;Admin: صفحه‌ای تازه حاوی «== پرامپت‌نویسی چیست؟ ==  &amp;#039;&amp;#039;&amp;#039;پرامپت‌نویسی (Prompt Engineering)&amp;#039;&amp;#039;&amp;#039; هنر و مهارت نوشتن دستورات (prompt) برای مدل‌های هوش مصنوعی زبانی (مثل ChatGPT، Claude، Gemini) به‌گونه‌ای است که بهترین، دقیق‌ترین و مفیدترین خروجی ممکن را دریافت کنیم. یک پرامپت خوب می‌تواند تفاوت ب...» ایجاد کرد&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== پرامپت‌نویسی چیست؟ ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;پرامپت‌نویسی (Prompt Engineering)&#039;&#039;&#039; هنر و مهارت نوشتن دستورات (prompt) برای مدل‌های هوش مصنوعی زبانی (مثل ChatGPT، Claude، Gemini) به‌گونه‌ای است که بهترین، دقیق‌ترین و مفیدترین خروجی ممکن را دریافت کنیم. یک پرامپت خوب می‌تواند تفاوت بزرگی بین یک پاسخ ضعیف و یک پاسخ عالی ایجاد کند.&lt;br /&gt;
&lt;br /&gt;
== مفاهیم پایه ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Prompt&#039;&#039;&#039;: متن یا دستوری که به مدل هوش مصنوعی داده می‌شود.&lt;br /&gt;
* &#039;&#039;&#039;Context (زمینه)&#039;&#039;&#039;: اطلاعات پس‌زمینه‌ای که به مدل کمک می‌کند پاسخ دقیق‌تری بدهد.&lt;br /&gt;
* &#039;&#039;&#039;System Prompt&#039;&#039;&#039;: دستورالعمل کلی که رفتار و شخصیت مدل را در طول یک گفتگو تعیین می‌کند.&lt;br /&gt;
* &#039;&#039;&#039;Token&#039;&#039;&#039;: کوچک‌ترین واحد متنی که مدل پردازش می‌کند (تقریباً معادل بخشی از یک کلمه).&lt;br /&gt;
* &#039;&#039;&#039;Temperature&#039;&#039;&#039;: پارامتری که میزان خلاقیت/تصادفی بودن پاسخ مدل را کنترل می‌کند (عدد پایین = دقیق‌تر و قابل‌پیش‌بینی‌تر، عدد بالا = خلاقانه‌تر).&lt;br /&gt;
* &#039;&#039;&#039;Few-shot Prompting&#039;&#039;&#039;: دادن چند مثال به مدل قبل از درخواست اصلی تا الگوی پاسخ را یاد بگیرد.&lt;br /&gt;
* &#039;&#039;&#039;Zero-shot Prompting&#039;&#039;&#039;: درخواست مستقیم از مدل بدون دادن هیچ مثالی.&lt;br /&gt;
* &#039;&#039;&#039;Chain of Thought (زنجیرهٔ فکری)&#039;&#039;&#039;: درخواست از مدل برای فکر کردن قدم‌به‌قدم قبل از رسیدن به پاسخ نهایی.&lt;br /&gt;
* &#039;&#039;&#039;Hallucination&#039;&#039;&#039;: وقتی مدل اطلاعات نادرست یا ساختگی را با اعتمادبه‌نفس بیان می‌کند.&lt;br /&gt;
&lt;br /&gt;
== اصول یک پرامپت خوب ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;direction:rtl; width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! اصل !! توضیح&lt;br /&gt;
|-&lt;br /&gt;
| وضوح (Clarity) || دقیق و واضح بگویید چه می‌خواهید؛ از ابهام پرهیز کنید.&lt;br /&gt;
|-&lt;br /&gt;
| زمینه (Context) || اطلاعات لازم (هدف، مخاطب، محدودیت‌ها) را در پرامپت بگنجانید.&lt;br /&gt;
|-&lt;br /&gt;
| مشخص کردن فرمت خروجی || بگویید پاسخ به چه شکلی باشد (لیست، جدول، کد، مقاله و...).&lt;br /&gt;
|-&lt;br /&gt;
| تعیین نقش (Role) || از مدل بخواهید نقش خاصی ایفا کند، مثلاً «به‌عنوان یک برنامه‌نویس ارشد پاسخ بده».&lt;br /&gt;
|-&lt;br /&gt;
| مثال دادن (Examples) || با ارائهٔ یک یا چند نمونه، الگوی موردنظر را روشن‌تر کنید.&lt;br /&gt;
|-&lt;br /&gt;
| محدودیت طول || اگر پاسخ کوتاه یا بلند می‌خواهید، آن را مشخص کنید (مثلاً «در حد ۲۰۰ کلمه»).&lt;br /&gt;
|-&lt;br /&gt;
| تکرار و اصلاح (Iteration) || اگر پاسخ اول رضایت‌بخش نبود، پرامپت را اصلاح و دوباره امتحان کنید.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== تکنیک‌های پرامپت‌نویسی ==&lt;br /&gt;
&lt;br /&gt;
=== ۱. تعیین نقش (Role Prompting) ===&lt;br /&gt;
به مدل بگویید چه نقشی دارد تا لحن و محتوای پاسخ متناسب شود.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;direction:rtl; text-align:right;&amp;quot;&amp;gt;&lt;br /&gt;
مثال: «تو یک متخصص سئو با ۱۰ سال سابقه هستی. یک استراتژی سئو برای یک فروشگاه آنلاین لباس پیشنهاد بده.»&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ۲. زنجیرهٔ فکری (Chain of Thought) ===&lt;br /&gt;
از مدل بخواهید مرحله‌به‌مرحله فکر کند، مخصوصاً برای مسائل پیچیده یا محاسباتی.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;direction:rtl; text-align:right;&amp;quot;&amp;gt;&lt;br /&gt;
مثال: «این مسئله را قدم‌به‌قدم حل کن و برای هر مرحله توضیح بده که چرا آن کار را انجام می‌دهی.»&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ۳. Few-shot Prompting ===&lt;br /&gt;
چند مثال از الگوی موردنظر بده تا مدل سبک پاسخ را یاد بگیرد.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;direction:rtl; text-align:right;&amp;quot;&amp;gt;&lt;br /&gt;
مثال:&lt;br /&gt;
ورودی: خوشحالم&lt;br /&gt;
خروجی: مثبت&lt;br /&gt;
&lt;br /&gt;
ورودی: از این وضعیت خسته شدم&lt;br /&gt;
خروجی: منفی&lt;br /&gt;
&lt;br /&gt;
ورودی: هوا امروز عالیه&lt;br /&gt;
خروجی: ؟&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ۴. مشخص کردن فرمت خروجی ===&lt;br /&gt;
&amp;lt;pre style=&amp;quot;direction:rtl; text-align:right;&amp;quot;&amp;gt;&lt;br /&gt;
مثال: «پاسخ را به‌صورت جدول با سه ستون (نام، مزیت، معایب) بنویس.»&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ۵. محدود کردن دامنهٔ پاسخ ===&lt;br /&gt;
&amp;lt;pre style=&amp;quot;direction:rtl; text-align:right;&amp;quot;&amp;gt;&lt;br /&gt;
مثال: «فقط بر اساس اطلاعاتی که در متن زیر داده شده پاسخ بده و از دانش عمومی استفاده نکن.»&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ۶. درخواست خودارزیابی (Self-critique) ===&lt;br /&gt;
&amp;lt;pre style=&amp;quot;direction:rtl; text-align:right;&amp;quot;&amp;gt;&lt;br /&gt;
مثال: «پاسخ را بنویس، سپس آن را نقد کن و نسخهٔ بهتری ارائه بده.»&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ساختار پیشنهادی یک پرامپت کامل ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;direction:rtl; width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! بخش !! توضیح&lt;br /&gt;
|-&lt;br /&gt;
| نقش || مدل چه کسی/چه چیزی باشد&lt;br /&gt;
|-&lt;br /&gt;
| هدف || چه کاری باید انجام شود&lt;br /&gt;
|-&lt;br /&gt;
| زمینه || اطلاعات پس‌زمینه‌ای لازم&lt;br /&gt;
|-&lt;br /&gt;
| محدودیت‌ها || چه چیزهایی نباید انجام شود یا چه محدودیت‌هایی وجود دارد&lt;br /&gt;
|-&lt;br /&gt;
| فرمت خروجی || شکل نهایی پاسخ (لیست، جدول، کد و...)&lt;br /&gt;
|-&lt;br /&gt;
| مثال (اختیاری) || یک یا چند نمونه برای روشن‌تر شدن انتظار&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
نمونهٔ کامل با این ساختار:&lt;br /&gt;
&amp;lt;pre style=&amp;quot;direction:rtl; text-align:right;&amp;quot;&amp;gt;&lt;br /&gt;
تو یک مربی تناسب‌اندام حرفه‌ای هستی (نقش).&lt;br /&gt;
یک برنامهٔ تمرینی ۳ روزه برای یک فرد مبتدی که فقط دمبل در خانه دارد طراحی کن (هدف).&lt;br /&gt;
فرد ۲۵ سال دارد و هدفش افزایش حجم عضلانی است (زمینه).&lt;br /&gt;
از تمرینات پرخطر یا نیازمند دستگاه باشگاه استفاده نکن (محدودیت).&lt;br /&gt;
خروجی را به‌صورت جدول با ستون‌های روز، حرکت، تعداد ست و تکرار بنویس (فرمت خروجی).&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== اشتباهات رایج ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;direction:rtl; width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! اشتباه !! راه‌حل&lt;br /&gt;
|-&lt;br /&gt;
| پرامپت مبهم و کلی || جزئیات و هدف مشخص را اضافه کنید&lt;br /&gt;
|-&lt;br /&gt;
| ندادن زمینهٔ کافی || اطلاعات لازم (مخاطب، هدف، سبک) را در پرامپت بگنجانید&lt;br /&gt;
|-&lt;br /&gt;
| درخواست چند کار متفاوت در یک پرامپت || وظایف را تفکیک کرده و مرحله‌به‌مرحله درخواست دهید&lt;br /&gt;
|-&lt;br /&gt;
| اعتماد کورکورانه به خروجی || همیشه پاسخ‌های مهم (مخصوصاً اطلاعات فنی یا آماری) را راستی‌آزمایی کنید&lt;br /&gt;
|-&lt;br /&gt;
| عدم اصلاح پرامپت بعد از پاسخ ضعیف || پرامپت را با جزئیات بیشتر یا مثال بازنویسی و دوباره امتحان کنید&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== نکات و بهترین شیوه‌ها ==&lt;br /&gt;
&lt;br /&gt;
* پرامپت را مثل صحبت با یک همکار باهوش ولی بدون اطلاعات زمینه‌ای بنویسید؛ هرچه بیشتر و دقیق‌تر توضیح دهید، پاسخ بهتری می‌گیرید.&lt;br /&gt;
* برای وظایف پیچیده، پرامپت را به چند مرحلهٔ کوچک‌تر بشکنید.&lt;br /&gt;
* از علامت‌های واضح (مثل شماره‌گذاری، خط تیره، یا برچسب‌های XML) برای جدا کردن بخش‌های مختلف پرامپت استفاده کنید.&lt;br /&gt;
* همیشه خروجی مدل را بازبینی و در صورت نیاز پرامپت را اصلاح کنید (Prompt Iteration).&lt;br /&gt;
* برای کارهای تکراری، پرامپت‌های موفق خود را ذخیره و به‌عنوان الگو (Template) دوباره استفاده کنید.&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.shakibaabutalebi.ir/index.php?title=Command_prompt&amp;diff=19</id>
		<title>Command prompt</title>
		<link rel="alternate" type="text/html" href="https://wiki.shakibaabutalebi.ir/index.php?title=Command_prompt&amp;diff=19"/>
		<updated>2026-09-06T06:58:08Z</updated>

		<summary type="html">&lt;p&gt;Admin: صفحه‌ای تازه حاوی «== CMD چیست؟ ==  &amp;#039;&amp;#039;&amp;#039;CMD (Command Prompt)&amp;#039;&amp;#039;&amp;#039; یک رابط خط فرمان (Command Line Interface) در سیستم‌عامل ویندوز است که با نوشتن دستورات متنی، امکان اجرای عملیات مختلف (مدیریت فایل‌ها، شبکه، سیستم و...) را بدون نیاز به رابط گرافیکی فراهم می‌کند. نسخهٔ پیشرفته‌تر آن &amp;#039;&amp;#039;&amp;#039;PowerShell&amp;#039;&amp;#039;&amp;#039;...» ایجاد کرد&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== CMD چیست؟ ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;CMD (Command Prompt)&#039;&#039;&#039; یک رابط خط فرمان (Command Line Interface) در سیستم‌عامل ویندوز است که با نوشتن دستورات متنی، امکان اجرای عملیات مختلف (مدیریت فایل‌ها، شبکه، سیستم و...) را بدون نیاز به رابط گرافیکی فراهم می‌کند. نسخهٔ پیشرفته‌تر آن &#039;&#039;&#039;PowerShell&#039;&#039;&#039; است که قابلیت‌های بیشتری دارد.&lt;br /&gt;
&lt;br /&gt;
== باز کردن CMD ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;direction:rtl; width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! توضیح !! روش&lt;br /&gt;
|-&lt;br /&gt;
| باز کردن ساده || کلید Win را بزنید، بنویسید cmd و Enter بزنید&lt;br /&gt;
|-&lt;br /&gt;
| باز کردن با دسترسی مدیر (Administrator) || جستجوی cmd، سپس کلیک راست و انتخاب Run as administrator&lt;br /&gt;
|-&lt;br /&gt;
| باز کردن از مسیر یک پوشهٔ خاص || در File Explorer داخل پوشه، در نوار آدرس بنویسید cmd و Enter بزنید&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== مفاهیم پایه ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Path (مسیر)&#039;&#039;&#039;: آدرس یک فایل یا پوشه در سیستم، مثل &amp;lt;code style=&amp;quot;direction:ltr;&amp;quot;&amp;gt;C:\Users\Name&amp;lt;/code&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Directory (دایرکتوری)&#039;&#039;&#039;: معادل پوشه (Folder)&lt;br /&gt;
* &#039;&#039;&#039;Argument / Parameter&#039;&#039;&#039;: مقادیر اضافه که همراه یک دستور نوشته می‌شوند تا رفتار آن را مشخص کنند&lt;br /&gt;
* &#039;&#039;&#039;Flag / Switch&#039;&#039;&#039;: گزینه‌های اختیاری یک دستور، معمولاً با علامت &amp;lt;code style=&amp;quot;direction:ltr;&amp;quot;&amp;gt;/&amp;lt;/code&amp;gt; نوشته می‌شوند (مثل &amp;lt;code style=&amp;quot;direction:ltr;&amp;quot;&amp;gt;/?&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &#039;&#039;&#039;Environment Variable (متغیر محیطی)&#039;&#039;&#039;: مقادیری که در سطح سیستم تعریف شده و توسط برنامه‌ها قابل استفاده‌اند (مثل &amp;lt;code style=&amp;quot;direction:ltr;&amp;quot;&amp;gt;PATH&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &#039;&#039;&#039;Batch File&#039;&#039;&#039;: فایلی با پسوند &amp;lt;code style=&amp;quot;direction:ltr;&amp;quot;&amp;gt;.bat&amp;lt;/code&amp;gt; که مجموعه‌ای از دستورات CMD را به‌صورت خودکار اجرا می‌کند&lt;br /&gt;
&lt;br /&gt;
== ناوبری بین پوشه‌ها ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;direction:rtl; width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! توضیح !! دستور&lt;br /&gt;
|-&lt;br /&gt;
| نمایش مسیر فعلی || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;cd&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| رفتن به یک پوشهٔ مشخص || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;cd [مسیر]&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| رفتن به پوشهٔ بالاتر || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;cd ..&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| رفتن به ریشهٔ درایو فعلی || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;cd \&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| تغییر درایو (مثلاً به D) || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;D:&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| نمایش لیست فایل‌ها و پوشه‌ها || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;dir&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| پاک کردن صفحهٔ نمایش || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;cls&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| رفتن به یک پوشهٔ مشخص || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;cd [مسیر]&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| رفتن به پوشهٔ بالاتر || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;cd ..&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| رفتن دو سطح بالاتر || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;cd ..\..&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| رفتن به ریشهٔ درایو فعلی || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;cd \&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| رفتن به پوشهٔ کاربری (Home) || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;cd %userprofile%&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| تغییر درایو (مثلاً به D) || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;D:&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| نمایش لیست فایل‌ها و پوشه‌ها || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;dir&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| نمایش لیست به همراه زیرپوشه‌ها || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;dir /s&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| نمایش فقط نام فایل‌ها (بدون جزئیات) || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;dir /b&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| نمایش فایل‌های مخفی هم || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;dir /a&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| پاک کردن صفحهٔ نمایش || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;cls&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| نمایش تاریخچهٔ دستورات اجراشده در همین پنجره || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;doskey /history&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| رفتن به دستور قبلی (بدون تایپ دوباره) || کلید جهت‌دار بالا (↑)&lt;br /&gt;
|-&lt;br /&gt;
| تکمیل خودکار نام فایل/پوشه || کلید Tab&lt;br /&gt;
|}&lt;br /&gt;
== مدیریت فایل‌ها و پوشه‌ها ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;direction:rtl; width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! توضیح !! دستور&lt;br /&gt;
|-&lt;br /&gt;
| ساخت پوشهٔ جدید || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;mkdir [نام]&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| حذف یک پوشهٔ خالی || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;rmdir [نام]&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| حذف یک پوشه به همراه محتویات آن || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;rmdir /s /q [نام]&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| حذف یک فایل || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;del [نام فایل]&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| کپی کردن فایل || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;copy [مبدأ] [مقصد]&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| کپی کردن یک پوشه به همراه زیرپوشه‌ها || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;xcopy [مبدأ] [مقصد] /E /I&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| انتقال یا تغییر نام فایل/پوشه || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;move [مبدأ] [مقصد]&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| تغییر نام فایل || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;ren [نام قدیم] [نام جدید]&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| نمایش محتویات یک فایل متنی || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;type [نام فایل]&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| ساخت یک فایل متنی خالی || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;echo. &amp;gt; [نام فایل]&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== اطلاعات سیستم ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;direction:rtl; width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! توضیح !! دستور&lt;br /&gt;
|-&lt;br /&gt;
| نمایش اطلاعات کامل سیستم‌عامل و سخت‌افزار || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;systeminfo&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| نمایش نسخهٔ ویندوز || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;ver&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| نمایش لیست فرآیندهای در حال اجرا || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;tasklist&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| متوقف کردن یک فرآیند با نام || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;taskkill /IM [نام] /F&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| متوقف کردن یک فرآیند با شناسه (PID) || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;taskkill /PID [شماره] /F&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| مشاهدهٔ فضای خالی و مصرفی دیسک || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;wmic logicaldisk get size,freespace,caption&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== شبکه ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;direction:rtl; width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! توضیح !! دستور&lt;br /&gt;
|-&lt;br /&gt;
| نمایش تنظیمات شبکه (IP، Gateway و...) || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;ipconfig&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| نمایش اطلاعات کامل و پیشرفتهٔ شبکه || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;ipconfig /all&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| تست اتصال به یک آدرس || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;ping [آدرس یا IP]&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| ردیابی مسیر بستهٔ اطلاعاتی تا مقصد || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;tracert [آدرس]&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| نمایش اطلاعات DNS یک دامنه || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;nslookup [دامنه]&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| پاک کردن کش DNS || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;ipconfig /flushdns&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| نمایش اتصالات فعال شبکه و پورت‌ها || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;netstat -an&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== کاربران و دسترسی‌ها ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;direction:rtl; width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! توضیح !! دستور&lt;br /&gt;
|-&lt;br /&gt;
| نمایش نام کاربری فعلی || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;whoami&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| نمایش لیست کاربران سیستم || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;net user&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| ساخت کاربر جدید || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;net user [نام] [رمز] /add&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| تغییر رمز عبور یک کاربر || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;net user [نام] [رمز جدید]&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== دستورات پرکاربرد دیگر ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;direction:rtl; width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! توضیح !! دستور&lt;br /&gt;
|-&lt;br /&gt;
| نمایش راهنمای یک دستور || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;[دستور] /?&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| نمایش لیست تمام دستورات موجود || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;help&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| اجرای یک برنامه با نام || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;start [نام برنامه]&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| خروج از CMD || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;exit&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| باز کردن ابزار ویرایش رجیستری || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;regedit&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| اجرای ابزار مدیریت دیسک || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;diskmgmt.msc&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== نوشتن فایل Batch (.bat) ==&lt;br /&gt;
&lt;br /&gt;
فایل‌های &amp;lt;code style=&amp;quot;direction:ltr;&amp;quot;&amp;gt;.bat&amp;lt;/code&amp;gt; برای اجرای خودکار مجموعه‌ای از دستورات CMD استفاده می‌شوند. نمونه‌ای ساده:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;direction:ltr; text-align:left;&amp;quot;&amp;gt;&lt;br /&gt;
@echo off&lt;br /&gt;
echo Hello, this is a batch file!&lt;br /&gt;
mkdir NewFolder&lt;br /&gt;
cd NewFolder&lt;br /&gt;
echo Done!&lt;br /&gt;
pause&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
توضیح خطوط:&lt;br /&gt;
* &amp;lt;code style=&amp;quot;direction:ltr;&amp;quot;&amp;gt;@echo off&amp;lt;/code&amp;gt;: از نمایش خود دستورات در خروجی جلوگیری می‌کند.&lt;br /&gt;
* &amp;lt;code style=&amp;quot;direction:ltr;&amp;quot;&amp;gt;pause&amp;lt;/code&amp;gt;: اجرای فایل را متوقف می‌کند تا کاربر یک کلید بزند (برای دیدن خروجی).&lt;br /&gt;
&lt;br /&gt;
== نکات و بهترین شیوه‌ها ==&lt;br /&gt;
&lt;br /&gt;
* قبل از استفاده از دستورات حذف (&amp;lt;code style=&amp;quot;direction:ltr;&amp;quot;&amp;gt;del&amp;lt;/code&amp;gt;، &amp;lt;code style=&amp;quot;direction:ltr;&amp;quot;&amp;gt;rmdir /s&amp;lt;/code&amp;gt;)، از مسیر و نام فایل/پوشه مطمئن شوید؛ این عملیات‌ها معمولاً قابل بازگشت نیستند.&lt;br /&gt;
* برای اجرای دستوراتی که نیاز به دسترسی سطح بالا دارند (مثل تغییر تنظیمات شبکه یا سیستم)، CMD را با «Run as administrator» باز کنید.&lt;br /&gt;
* از تکمیل خودکار مسیرها با کلید Tab استفاده کنید تا از اشتباه تایپی جلوگیری شود.&lt;br /&gt;
* برای مسیرهایی که فاصله دارند، آن‌ها را داخل گیومه بگذارید، مثل &amp;lt;code style=&amp;quot;direction:ltr;&amp;quot;&amp;gt;cd &amp;quot;C:\My Folder&amp;quot;&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.shakibaabutalebi.ir/index.php?title=Wordpress&amp;diff=18</id>
		<title>Wordpress</title>
		<link rel="alternate" type="text/html" href="https://wiki.shakibaabutalebi.ir/index.php?title=Wordpress&amp;diff=18"/>
		<updated>2026-09-06T06:46:57Z</updated>

		<summary type="html">&lt;p&gt;Admin: صفحه‌ای تازه حاوی «== وردپرس چیست؟ ==  &amp;#039;&amp;#039;&amp;#039;وردپرس (WordPress)&amp;#039;&amp;#039;&amp;#039; یک سیستم مدیریت محتوا (CMS) متن‌باز است که با زبان PHP نوشته شده و از پایگاه‌داده MySQL/MariaDB استفاده می‌کند. با وردپرس می‌توان بدون نیاز به دانش برنامه‌نویسی عمیق، انواع وب‌سایت (وبلاگ، فروشگاه، سایت شرکتی، پورت...» ایجاد کرد&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== وردپرس چیست؟ ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;وردپرس (WordPress)&#039;&#039;&#039; یک سیستم مدیریت محتوا (CMS) متن‌باز است که با زبان PHP نوشته شده و از پایگاه‌داده MySQL/MariaDB استفاده می‌کند. با وردپرس می‌توان بدون نیاز به دانش برنامه‌نویسی عمیق، انواع وب‌سایت (وبلاگ، فروشگاه، سایت شرکتی، پورتفولیو و...) ساخت. حدود ۴۰٪ از وب‌سایت‌های جهان با وردپرس ساخته شده‌اند.&lt;br /&gt;
&lt;br /&gt;
== مفاهیم پایه ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Theme (قالب)&#039;&#039;&#039;: ظاهر و چیدمان بصری سایت را مشخص می‌کند.&lt;br /&gt;
* &#039;&#039;&#039;Plugin (افزونه)&#039;&#039;&#039;: قابلیت‌های جدید به سایت اضافه می‌کند (فرم تماس، فروشگاه، سئو و...).&lt;br /&gt;
* &#039;&#039;&#039;Post (نوشته)&#039;&#039;&#039;: محتوای وبلاگی که معمولاً بر اساس تاریخ مرتب می‌شود.&lt;br /&gt;
* &#039;&#039;&#039;Page (برگه)&#039;&#039;&#039;: محتوای ثابت مثل «دربارهٔ ما» یا «تماس با ما».&lt;br /&gt;
* &#039;&#039;&#039;Widget (ابزارک)&#039;&#039;&#039;: بلوک‌های کوچک محتوایی که در نوار کناری یا فوتر قرار می‌گیرند.&lt;br /&gt;
* &#039;&#039;&#039;Menu (منو)&#039;&#039;&#039;: ساختار ناوبری سایت.&lt;br /&gt;
* &#039;&#039;&#039;wp-admin&#039;&#039;&#039;: پنل مدیریت وردپرس.&lt;br /&gt;
* &#039;&#039;&#039;Child Theme (قالب فرزند)&#039;&#039;&#039;: قالبی که از یک قالب اصلی ارث‌بری می‌کند تا تغییرات سفارشی بدون از دست رفتن در آپدیت باقی بماند.&lt;br /&gt;
* &#039;&#039;&#039;Shortcode&#039;&#039;&#039;: کدهای کوتاه بین کروشه برای افزودن قابلیت خاص داخل محتوا، مثل &amp;lt;code style=&amp;quot;direction:ltr;&amp;quot;&amp;gt;[gallery]&amp;lt;/code&amp;gt;.&lt;br /&gt;
* &#039;&#039;&#039;Custom Post Type&#039;&#039;&#039;: نوع محتوای سفارشی غیر از پست و برگهٔ پیش‌فرض (مثل «محصول» یا «نمونه‌کار»).&lt;br /&gt;
&lt;br /&gt;
== نصب و راه‌اندازی ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;direction:rtl; width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! توضیح !! جزئیات&lt;br /&gt;
|-&lt;br /&gt;
| نیازمندی‌های سرور || PHP نسخهٔ ۷.۴ یا بالاتر، MySQL 5.7+ یا MariaDB 10.3+&lt;br /&gt;
|-&lt;br /&gt;
| نصب یک‌کلیکی (اکثر هاست‌ها) || از پنل هاست (مثل Plesk یا cPanel) گزینهٔ نصب وردپرس را انتخاب کنید&lt;br /&gt;
|-&lt;br /&gt;
| نصب دستی || دانلود فایل‌ها از wordpress.org، آپلود به هاست، ساخت پایگاه‌داده، اجرای مراحل نصب از مرورگر&lt;br /&gt;
|-&lt;br /&gt;
| آدرس پنل مدیریت || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;yoursite.com/wp-admin&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== ساختار پوشه‌ها و فایل‌های مهم ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;direction:rtl; width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! توضیح !! مسیر/فایل&lt;br /&gt;
|-&lt;br /&gt;
| فایل تنظیمات اصلی (اتصال به دیتابیس) || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;wp-config.php&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| پوشهٔ قالب‌ها || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;wp-content/themes/&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| پوشهٔ افزونه‌ها || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;wp-content/plugins/&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| پوشهٔ فایل‌های آپلودی (تصاویر و رسانه) || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;wp-content/uploads/&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| فایل تنظیمات لینک‌ها و ریدایرکت || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;.htaccess&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== مدیریت قالب (Theme) ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;direction:rtl; width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! توضیح !! مسیر در پنل مدیریت&lt;br /&gt;
|-&lt;br /&gt;
| نصب و تغییر قالب || Appearance &amp;gt; Themes&lt;br /&gt;
|-&lt;br /&gt;
| شخصی‌سازی زندهٔ سایت (رنگ، لوگو، منو) || Appearance &amp;gt; Customize&lt;br /&gt;
|-&lt;br /&gt;
| ویرایش کدهای قالب (فایل‌های PHP/CSS) || Appearance &amp;gt; Theme File Editor&lt;br /&gt;
|-&lt;br /&gt;
| ساخت قالب فرزند (روش امن‌تر برای شخصی‌سازی) || باید دستی با فایل &amp;lt;code style=&amp;quot;direction:ltr;&amp;quot;&amp;gt;style.css&amp;lt;/code&amp;gt; و &amp;lt;code style=&amp;quot;direction:ltr;&amp;quot;&amp;gt;functions.php&amp;lt;/code&amp;gt; ساخته شود&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== مدیریت افزونه‌ها (Plugins) ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;direction:rtl; width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! توضیح !! مسیر در پنل مدیریت&lt;br /&gt;
|-&lt;br /&gt;
| نصب افزونهٔ جدید || Plugins &amp;gt; Add New&lt;br /&gt;
|-&lt;br /&gt;
| فعال/غیرفعال کردن افزونه || Plugins &amp;gt; Installed Plugins&lt;br /&gt;
|-&lt;br /&gt;
| به‌روزرسانی افزونه‌ها || Plugins &amp;gt; Installed Plugins (اعلان آپدیت به‌صورت خودکار نمایش داده می‌شود)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;افزونه‌های پرکاربرد و معروف:&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Yoast SEO&#039;&#039;&#039; یا &#039;&#039;&#039;Rank Math&#039;&#039;&#039;: بهینه‌سازی سئو&lt;br /&gt;
* &#039;&#039;&#039;WooCommerce&#039;&#039;&#039;: ساخت فروشگاه آنلاین&lt;br /&gt;
* &#039;&#039;&#039;Elementor&#039;&#039;&#039; یا &#039;&#039;&#039;WPBakery&#039;&#039;&#039;: صفحه‌ساز بصری (Page Builder)&lt;br /&gt;
* &#039;&#039;&#039;Contact Form 7&#039;&#039;&#039; یا &#039;&#039;&#039;WPForms&#039;&#039;&#039;: ساخت فرم تماس&lt;br /&gt;
* &#039;&#039;&#039;UpdraftPlus&#039;&#039;&#039;: پشتیبان‌گیری خودکار&lt;br /&gt;
* &#039;&#039;&#039;WP Super Cache&#039;&#039;&#039; یا &#039;&#039;&#039;W3 Total Cache&#039;&#039;&#039;: افزایش سرعت سایت با کش&lt;br /&gt;
* &#039;&#039;&#039;Wordfence&#039;&#039;&#039;: امنیت سایت&lt;br /&gt;
&lt;br /&gt;
== مدیریت محتوا ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;direction:rtl; width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! توضیح !! مسیر در پنل مدیریت&lt;br /&gt;
|-&lt;br /&gt;
| نوشتن پست جدید (وبلاگ) || Posts &amp;gt; Add New&lt;br /&gt;
|-&lt;br /&gt;
| ساخت برگهٔ جدید (صفحهٔ ثابت) || Pages &amp;gt; Add New&lt;br /&gt;
|-&lt;br /&gt;
| مدیریت دسته‌بندی‌ها و برچسب‌ها || Posts &amp;gt; Categories / Tags&lt;br /&gt;
|-&lt;br /&gt;
| مدیریت رسانه (تصاویر، ویدیو) || Media &amp;gt; Library&lt;br /&gt;
|-&lt;br /&gt;
| مدیریت نظرات || Comments&lt;br /&gt;
|-&lt;br /&gt;
| ویرایشگر پیش‌فرض محتوا || Gutenberg (ویرایشگر بلوکی)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== منو و ناوبری ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;direction:rtl; width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! توضیح !! مسیر در پنل مدیریت&lt;br /&gt;
|-&lt;br /&gt;
| ساخت و مدیریت منوها || Appearance &amp;gt; Menus&lt;br /&gt;
|-&lt;br /&gt;
| تخصیص منو به موقعیت‌های قالب (هدر، فوتر) || در همان صفحهٔ Menus، بخش Menu Settings&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== کاربران و نقش‌ها ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;direction:rtl; width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! نقش !! سطح دسترسی&lt;br /&gt;
|-&lt;br /&gt;
| Administrator || دسترسی کامل به تمام بخش‌های سایت&lt;br /&gt;
|-&lt;br /&gt;
| Editor || مدیریت تمام پست‌ها و برگه‌ها (حتی نوشته‌های دیگران)&lt;br /&gt;
|-&lt;br /&gt;
| Author || نوشتن، ویرایش و انتشار پست‌های خودش&lt;br /&gt;
|-&lt;br /&gt;
| Contributor || نوشتن پست ولی بدون امکان انتشار مستقیم&lt;br /&gt;
|-&lt;br /&gt;
| Subscriber || فقط مدیریت پروفایل شخصی و مشاهدهٔ محتوا&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== سئو (SEO) پایه ==&lt;br /&gt;
&lt;br /&gt;
* استفاده از پیوندهای یکتا و خوانا (Permalink) از مسیر Settings &amp;gt; Permalinks (پیشنهاد: حالت Post name).&lt;br /&gt;
* نوشتن عنوان (Title) و توضیحات متا (Meta Description) مناسب برای هر صفحه با کمک افزونه‌هایی مثل Yoast SEO.&lt;br /&gt;
* استفاده از تصاویر بهینه‌شده (حجم کم) و متن جایگزین (Alt Text) برای هر تصویر.&lt;br /&gt;
* ساخت و ارسال نقشهٔ سایت (Sitemap) به گوگل سرچ کنسول.&lt;br /&gt;
* بهینه‌سازی سرعت سایت با کش، فشرده‌سازی تصاویر و انتخاب هاست مناسب.&lt;br /&gt;
&lt;br /&gt;
== امنیت و پشتیبان‌گیری ==&lt;br /&gt;
&lt;br /&gt;
* رمز عبور قوی برای وردپرس، دیتابیس و FTP انتخاب کنید و نام کاربری admin پیش‌فرض را تغییر دهید.&lt;br /&gt;
* وردپرس، قالب و افزونه‌ها را همیشه به‌روز نگه دارید.&lt;br /&gt;
* از افزونه‌های امنیتی (مثل Wordfence) برای محافظت در برابر حملات استفاده کنید.&lt;br /&gt;
* به‌صورت منظم از سایت و پایگاه‌داده پشتیبان (Backup) تهیه کنید (دستی یا با افزونه مثل UpdraftPlus).&lt;br /&gt;
* در صورت امکان، احراز هویت دومرحله‌ای (2FA) برای ورود به wp-admin فعال کنید.&lt;br /&gt;
&lt;br /&gt;
== مشکلات رایج و راه‌حل ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;direction:rtl; width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! مشکل !! راه‌حل&lt;br /&gt;
|-&lt;br /&gt;
| صفحهٔ سفید مرگ (White Screen of Death) || فعال‌سازی نمایش خطا در &amp;lt;code style=&amp;quot;direction:ltr;&amp;quot;&amp;gt;wp-config.php&amp;lt;/code&amp;gt; با &amp;lt;code style=&amp;quot;direction:ltr;&amp;quot;&amp;gt;WP_DEBUG&amp;lt;/code&amp;gt; و بررسی افزونه/قالب مشکل‌دار&lt;br /&gt;
|-&lt;br /&gt;
| خطای اتصال به پایگاه‌داده || بررسی صحت اطلاعات دیتابیس در &amp;lt;code style=&amp;quot;direction:ltr;&amp;quot;&amp;gt;wp-config.php&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| کندی سایت || فعال‌سازی کش، بهینه‌سازی تصاویر، انتخاب هاست بهتر، حذف افزونه‌های غیرضروری&lt;br /&gt;
|-&lt;br /&gt;
| قفل شدن دسترسی ادمین || تغییر رمز عبور از طریق phpMyAdmin در جدول &amp;lt;code style=&amp;quot;direction:ltr;&amp;quot;&amp;gt;wp_users&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== نکات و بهترین شیوه‌ها ==&lt;br /&gt;
&lt;br /&gt;
* همیشه پیش از هرگونه تغییر مهم (آپدیت، تغییر قالب)، یک نسخهٔ پشتیبان کامل تهیه کنید.&lt;br /&gt;
* از قالب فرزند (Child Theme) برای شخصی‌سازی استفاده کنید تا تغییرات با آپدیت قالب اصلی از بین نروند.&lt;br /&gt;
* تعداد افزونه‌ها را به حداقل لازم محدود کنید تا سرعت و امنیت سایت حفظ شود.&lt;br /&gt;
* افزونه‌ها و قالب‌ها را فقط از منابع معتبر (وردپرس رسمی یا فروشندگان شناخته‌شده) دریافت کنید.&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.shakibaabutalebi.ir/index.php?title=Git&amp;diff=17</id>
		<title>Git</title>
		<link rel="alternate" type="text/html" href="https://wiki.shakibaabutalebi.ir/index.php?title=Git&amp;diff=17"/>
		<updated>2026-09-06T06:43:43Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Git چیست؟ ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Git&#039;&#039;&#039; یک سیستم کنترل نسخه (Version Control System) توزیع‌شده است که برای ردیابی تغییرات در فایل‌ها و هماهنگی کار بین چند نفر روی یک پروژه استفاده می‌شود. با Git می‌توان تاریخچهٔ کامل تغییرات یک پروژه را نگه داشت، به نسخه‌های قبلی بازگشت، و به‌صورت هم‌زمان با دیگران روی بخش‌های مختلف یک پروژه کار کرد.&lt;br /&gt;
&lt;br /&gt;
== مفاهیم پایه ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Repository (مخزن)&#039;&#039;&#039;: پوشه‌ای که Git تاریخچهٔ تغییرات آن را ردیابی می‌کند.&lt;br /&gt;
* &#039;&#039;&#039;Working Directory&#039;&#039;&#039;: فایل‌های واقعی روی سیستم که در حال ویرایش آن‌ها هستید.&lt;br /&gt;
* &#039;&#039;&#039;Staging Area (Index)&#039;&#039;&#039;: فضای واسط بین Working Directory و مخزن؛ فایل‌هایی که آماده‌ی ثبت (commit) هستند.&lt;br /&gt;
* &#039;&#039;&#039;Commit&#039;&#039;&#039;: یک نقطهٔ ذخیرهٔ دائمی در تاریخچهٔ پروژه، مثل عکس لحظه‌ای از وضعیت فایل‌ها.&lt;br /&gt;
* &#039;&#039;&#039;Branch (شاخه)&#039;&#039;&#039;: یک مسیر جداگانه برای توسعه، بدون تأثیر روی نسخهٔ اصلی.&lt;br /&gt;
* &#039;&#039;&#039;HEAD&#039;&#039;&#039;: اشاره‌گری به آخرین commit در شاخه‌ای که در حال حاضر روی آن هستید.&lt;br /&gt;
* &#039;&#039;&#039;Merge&#039;&#039;&#039;: ترکیب کردن تغییرات دو شاخه با هم.&lt;br /&gt;
* &#039;&#039;&#039;Remote&#039;&#039;&#039;: نسخه‌ای از مخزن که روی یک سرور (مثل GitHub، GitLab) قرار دارد.&lt;br /&gt;
* &#039;&#039;&#039;Clone&#039;&#039;&#039;: کپی کامل یک مخزن از راه دور روی سیستم شما.&lt;br /&gt;
&lt;br /&gt;
== نصب و تنظیمات اولیه ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;direction:rtl; width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! توضیح !! دستور&lt;br /&gt;
|-&lt;br /&gt;
| بررسی نصب بودن Git و نسخهٔ آن || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git --version&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| تنظیم نام کاربری (سراسری) || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git config --global user.name &amp;quot;نام شما&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| تنظیم ایمیل (سراسری) || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git config --global user.email &amp;quot;email@example.com&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| مشاهدهٔ تمام تنظیمات فعلی || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git config --list&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== شروع کار ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;direction:rtl; width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! توضیح !! دستور&lt;br /&gt;
|-&lt;br /&gt;
| ساخت یک مخزن جدید در پوشهٔ فعلی || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git init&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| کپی کردن یک مخزن از راه دور || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git clone [آدرس]&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| کپی کردن مخزن در یک پوشهٔ مشخص || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git clone [آدرس] [نام پوشه]&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== ثبت تغییرات ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;direction:rtl; width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! توضیح !! دستور&lt;br /&gt;
|-&lt;br /&gt;
| نمایش وضعیت فایل‌ها || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git status&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| اضافه کردن فایل به staging area || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git add [نام فایل]&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| اضافه کردن همهٔ فایل‌های تغییر یافته || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git add .&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| ثبت یک commit با توضیح || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git commit -m &amp;quot;پیام&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| اضافه کردن و ثبت هم‌زمان (فایل‌های ردیابی‌شده) || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git commit -am &amp;quot;پیام&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| اصلاح آخرین commit || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git commit --amend&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== مشاهدهٔ تاریخچه و تغییرات ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;direction:rtl; width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! توضیح !! دستور&lt;br /&gt;
|-&lt;br /&gt;
| نمایش تاریخچهٔ commit‌ها || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git log&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| نمایش خلاصه و یک‌خطی تاریخچه || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git log --oneline&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| نمایش تفاوت فایل‌های تغییر یافته (قبل از add) || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git diff&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| نمایش تفاوت فایل‌های staged || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git diff --staged&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| نمایش جزئیات یک commit خاص || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git show [commit-id]&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== کار با شاخه‌ها (Branch) ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;direction:rtl; width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! توضیح !! دستور&lt;br /&gt;
|-&lt;br /&gt;
| نمایش لیست شاخه‌ها || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git branch&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| ساخت شاخهٔ جدید || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git branch [نام]&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| رفتن به یک شاخه || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git checkout [نام]&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| رفتن به یک شاخه (روش جدیدتر) || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git switch [نام]&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| ساخت و رفتن به شاخهٔ جدید هم‌زمان || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git checkout -b [نام]&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| ادغام یک شاخه با شاخهٔ فعلی || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git merge [نام شاخه]&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| حذف یک شاخه || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git branch -d [نام]&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| حذف اجباری یک شاخهٔ ادغام‌نشده || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git branch -D [نام]&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== کار با ریموت (GitHub و مشابه) ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;direction:rtl; width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! توضیح !! دستور&lt;br /&gt;
|-&lt;br /&gt;
| اتصال به مخزن راه دور || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git remote add origin [آدرس]&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| نمایش لیست ریموت‌ها || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git remote -v&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| ارسال تغییرات به سرور || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git push origin [شاخه]&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| ارسال شاخهٔ جدید و تنظیم ردیابی آن || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git push -u origin [شاخه]&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| دریافت و ادغام تغییرات از سرور || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git pull origin [شاخه]&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| فقط دریافت تغییرات بدون ادغام || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git fetch origin&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== بازگشت و لغو تغییرات ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;direction:rtl; width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! توضیح !! دستور&lt;br /&gt;
|-&lt;br /&gt;
| لغو تغییرات یک فایل در Working Directory || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git checkout -- [فایل]&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| لغو تغییرات با دستور جدیدتر || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git restore [فایل]&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| خارج کردن فایل از staging area || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git reset [فایل]&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| بازگشت کامل به یک commit قبلی (خطرناک) || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git reset --hard [commit-id]&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| ساخت یک commit جدید که یک commit قبلی را خنثی می‌کند || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git revert [commit-id]&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Stash (ذخیرهٔ موقت تغییرات) ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;direction:rtl; width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! توضیح !! دستور&lt;br /&gt;
|-&lt;br /&gt;
| ذخیرهٔ موقت تغییرات فعلی || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git stash&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| نمایش لیست stash‌ها || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git stash list&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| بازگردانی آخرین stash || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git stash pop&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| حذف آخرین stash بدون بازگردانی || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git stash drop&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== برچسب‌گذاری (Tag) ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;direction:rtl; width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! توضیح !! دستور&lt;br /&gt;
|-&lt;br /&gt;
| ساخت یک تگ ساده || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git tag [نام]&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| ساخت تگ با توضیح || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git tag -a [نام] -m &amp;quot;پیام&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| نمایش لیست تگ‌ها || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git tag&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| ارسال تگ‌ها به سرور || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git push origin --tags&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Rebase و Cherry-pick ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;direction:rtl; width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! توضیح !! دستور&lt;br /&gt;
|-&lt;br /&gt;
| اعمال دوبارهٔ commit‌های شاخهٔ فعلی روی شاخهٔ دیگر || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git rebase [نام شاخه]&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| rebase تعاملی برای ویرایش/ترکیب چند commit || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git rebase -i HEAD~[تعداد]&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| انتخاب و اعمال یک commit خاص از شاخهٔ دیگر || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git cherry-pick [commit-id]&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== حل تعارض (Merge Conflict) ==&lt;br /&gt;
&lt;br /&gt;
وقتی دو شاخه تغییرات متفاوتی روی یک بخش از یک فایل داشته باشند، هنگام merge یا rebase تعارض (conflict) رخ می‌دهد. Git خطوط متعارض را با نشانه‌های زیر در فایل مشخص می‌کند:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;direction:ltr; text-align:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt; HEAD&lt;br /&gt;
محتوای شاخهٔ فعلی&lt;br /&gt;
=======&lt;br /&gt;
محتوای شاخهٔ دیگر&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; نام-شاخه&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
برای حل تعارض باید فایل را به‌صورت دستی ویرایش کرد، نشانه‌ها را حذف کرد و نسخهٔ نهایی را انتخاب نمود، سپس:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;direction:rtl; width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! توضیح !! دستور&lt;br /&gt;
|-&lt;br /&gt;
| اضافه کردن فایل حل‌شده به staging || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git add [فایل]&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| ادامهٔ فرآیند merge || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git commit&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| ادامهٔ فرآیند rebase بعد از حل تعارض || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git rebase --continue&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| لغو کامل عملیات merge || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git merge --abort&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== فایل .gitignore ==&lt;br /&gt;
&lt;br /&gt;
فایل &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;.gitignore&amp;lt;/code&amp;gt; برای مشخص کردن فایل‌ها و پوشه‌هایی است که نباید توسط Git ردیابی شوند (مثل فایل‌های موقت، پوشهٔ &amp;lt;code style=&amp;quot;direction:ltr;&amp;quot;&amp;gt;node_modules&amp;lt;/code&amp;gt;، یا فایل‌های تنظیمات حساس).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;direction:ltr; text-align:left;&amp;quot;&amp;gt;&lt;br /&gt;
# نمونه محتوای .gitignore&lt;br /&gt;
node_modules/&lt;br /&gt;
.env&lt;br /&gt;
*.log&lt;br /&gt;
.DS_Store&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== نکات و بهترین شیوه‌ها ==&lt;br /&gt;
&lt;br /&gt;
* پیام commit‌ها را کوتاه، واضح و توصیفی بنویسید.&lt;br /&gt;
* هر commit باید یک تغییر منطقی و مستقل را نشان دهد، نه چند تغییر نامرتبط با هم.&lt;br /&gt;
* قبل از push کردن، همیشه با &amp;lt;code style=&amp;quot;direction:ltr;&amp;quot;&amp;gt;git pull&amp;lt;/code&amp;gt; آخرین تغییرات را دریافت کنید.&lt;br /&gt;
* از شاخه‌های جداگانه (feature branch) برای هر ویژگی یا رفع باگ استفاده کنید و شاخهٔ اصلی (main/master) را همیشه پایدار نگه دارید.&lt;br /&gt;
* پیش از rebase یا reset --hard، مطمئن شوید که تغییرات مهم را از دست نمی‌دهید.&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.shakibaabutalebi.ir/index.php?title=Git&amp;diff=16</id>
		<title>Git</title>
		<link rel="alternate" type="text/html" href="https://wiki.shakibaabutalebi.ir/index.php?title=Git&amp;diff=16"/>
		<updated>2026-09-06T06:38:54Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== مفاهیم پایه ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Commit&#039;&#039;&#039;: یک نقطهٔ ذخیرهٔ دائمی در تاریخچهٔ پروژه، مثل عکس لحظه‌ای از وضعیت فایل‌ها.&lt;br /&gt;
* &#039;&#039;&#039;Branch (شاخه)&#039;&#039;&#039;: یک مسیر جداگانه برای توسعه، بدون تأثیر روی نسخهٔ اصلی.&lt;br /&gt;
* &#039;&#039;&#039;Merge&#039;&#039;&#039;: ترکیب کردن تغییرات دو شاخه با هم.&lt;br /&gt;
* &#039;&#039;&#039;Remote&#039;&#039;&#039;: نسخه‌ای از مخزن که روی یک سرور (مثل GitHub) قرار دارد.&lt;br /&gt;
&lt;br /&gt;
== دستورات پرکاربرد ==&lt;br /&gt;
&lt;br /&gt;
=== شروع کار ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;direction:rtl; width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! توضیح !! دستور&lt;br /&gt;
|-&lt;br /&gt;
| ساخت یک مخزن جدید در پوشهٔ فعلی || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git init&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| کپی کردن یک مخزن از راه دور || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git clone [آدرس]&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== ثبت تغییرات ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;direction:rtl; width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! توضیح !! دستور&lt;br /&gt;
|-&lt;br /&gt;
| نمایش وضعیت فایل‌ها || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git status&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| اضافه کردن فایل به staging area || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git add [نام فایل]&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| اضافه کردن همهٔ فایل‌های تغییر یافته || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git add .&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| ثبت یک commit با توضیح || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git commit -m &amp;quot;پیام&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== کار با شاخه‌ها ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;direction:rtl; width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! توضیح !! دستور&lt;br /&gt;
|-&lt;br /&gt;
| نمایش لیست شاخه‌ها || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git branch&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| ساخت شاخهٔ جدید || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git branch [نام]&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| رفتن به یک شاخه || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git checkout [نام]&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| ساخت و رفتن به شاخهٔ جدید هم‌زمان || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git checkout -b [نام]&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| ادغام یک شاخه با شاخهٔ فعلی || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git merge [نام شاخه]&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== کار با ریموت (GitHub و مشابه) ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;direction:rtl; width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! توضیح !! دستور&lt;br /&gt;
|-&lt;br /&gt;
| اتصال به مخزن راه دور || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git remote add origin [آدرس]&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| ارسال تغییرات به سرور || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git push origin [شاخه]&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| دریافت تغییرات از سرور || &amp;lt;code style=&amp;quot;direction:ltr; display:inline-block;&amp;quot;&amp;gt;git pull origin [شاخه]&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.shakibaabutalebi.ir/index.php?title=Git&amp;diff=15</id>
		<title>Git</title>
		<link rel="alternate" type="text/html" href="https://wiki.shakibaabutalebi.ir/index.php?title=Git&amp;diff=15"/>
		<updated>2026-09-06T06:30:56Z</updated>

		<summary type="html">&lt;p&gt;Admin: صفحه‌ای تازه حاوی «= گیت (Git) =  این صفحه یادداشت‌های مروری دربارهٔ کار با گیت است. هدف: یادگیری، مرور سریع و داشتن یک مرجع از دستورات و الگوهای پرکاربرد.  == چرا گیت مهم است؟ ==  * سیستم نسخه‌ی توزیع‌شده * ذخیرهٔ تاریخچهٔ تغییرات * همکاری گروهی و بازگشت آسان به_states_ * ش...» ایجاد کرد&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= گیت (Git) =&lt;br /&gt;
&lt;br /&gt;
این صفحه یادداشت‌های مروری دربارهٔ کار با گیت است.&lt;br /&gt;
هدف: یادگیری، مرور سریع و داشتن یک مرجع از دستورات و الگوهای پرکاربرد.&lt;br /&gt;
&lt;br /&gt;
== چرا گیت مهم است؟ ==&lt;br /&gt;
&lt;br /&gt;
* سیستم نسخه‌ی توزیع‌شده&lt;br /&gt;
* ذخیرهٔ تاریخچهٔ تغییرات&lt;br /&gt;
* همکاری گروهی و بازگشت آسان به_states_&lt;br /&gt;
* شاخه‌بندی و ترکیب تغییرات&lt;br /&gt;
* پایهٔ بسیاری از جریان‌های توسعه نرم‌افزار&lt;br /&gt;
&lt;br /&gt;
== نصب و تنظیم اولیه ==&lt;br /&gt;
&lt;br /&gt;
=== نصب ===&lt;br /&gt;
جهت نصب از مسیر رسمی یا مدیریت بستهٔ سیستم‌عامل استفاده کنید.&lt;br /&gt;
نسخهٔ نصب‌شده را این‌گونه چک کنید:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git --version&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== تنظیمات اولیه کاربر ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git config --global user.name &amp;quot;نام و نام خانوادگی&amp;quot;&lt;br /&gt;
git config --global user.email &amp;quot;email@example.com&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== مشاهده تنظیمات ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git config --list&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== مفاهیم پایه ==&lt;br /&gt;
&lt;br /&gt;
* مخزن Repository: محل نگهداری پروژه و تاریخچه&lt;br /&gt;
* Commit: نقطه ذخیره در تاریخچه&lt;br /&gt;
* Branch: خط توسعهٔ مستقل&lt;br /&gt;
* Merge / Rebase: ترکیب تغییرات بین شاخه‌ها&lt;br /&gt;
* Staging area: محل آماده‌سازی تغییرات قبل از Commit&lt;br /&gt;
* Remote: مخزن دورتر مثل سرویس میزبانی&lt;br /&gt;
&lt;br /&gt;
== دستورات پرکاربرد ==&lt;br /&gt;
&lt;br /&gt;
=== شروع پروژه ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git init&lt;br /&gt;
git status&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== افزودن و ثبت تغییرات ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git add .&lt;br /&gt;
git commit -m &amp;quot;توضیح کوتاه از تغییرات&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== بررسی وضعیت و تاریخچه ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git status&lt;br /&gt;
git log&lt;br /&gt;
git log --oneline&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== کار با شاخه‌ها ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git branch&lt;br /&gt;
git branch feature-x&lt;br /&gt;
git switch feature-x&lt;br /&gt;
git switch main&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== کار با مخزن دورتر ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git remote add origin &amp;lt;آدرس&amp;gt;&lt;br /&gt;
git push -u origin main&lt;br /&gt;
git pull&lt;br /&gt;
git clone &amp;lt;آدرس&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== مقایسه تغییرات ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git diff&lt;br /&gt;
git diff --staged&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== روند کاری ساده ==&lt;br /&gt;
&lt;br /&gt;
۱. برای کار جدید یک شاخه جدید باز کنید.&lt;br /&gt;
۲. تغییرات را stage کنید.&lt;br /&gt;
۳. یک Commit با پیام مشخص بزنید.&lt;br /&gt;
۴. تغییرات را به مخزن دورتر بفرستید یا با تیم همگام شوید.&lt;br /&gt;
۵. در صورت نیاز، Merge یا Rebase را در شاخهٔ اصلی انجام دهید.&lt;br /&gt;
&lt;br /&gt;
== عادات خوب ==&lt;br /&gt;
&lt;br /&gt;
* پیام Commit واضح و کوتاه باشد.&lt;br /&gt;
* Commit‌های بزرگ را به قطعات کوچک‌تر بشکنید.&lt;br /&gt;
* قبل از Push، Status و Diff را چک کنید.&lt;br /&gt;
* به‌جای کار مستقیم روی شاخه اصلی، از شاخه‌های کار específica استفاده کنید.&lt;br /&gt;
&lt;br /&gt;
== ادامه و ارتباط با صفحات دیگر ==&lt;br /&gt;
&lt;br /&gt;
* [[:WordPress|آشنایی با وردپرس]]&lt;br /&gt;
* [[:CMD|خط فرمان و CMD]]&lt;br /&gt;
* [[:Prompt-Engineering|پرامپت‌نویسی]]&lt;br /&gt;
&lt;br /&gt;
[[دسته‌بندی:یادگیری]]&lt;br /&gt;
[[دسته‌بندی:گیت]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.shakibaabutalebi.ir/index.php?title=%D8%B5%D9%81%D8%AD%D9%87%D9%94_%D8%A7%D8%B5%D9%84%DB%8C&amp;diff=14</id>
		<title>صفحهٔ اصلی</title>
		<link rel="alternate" type="text/html" href="https://wiki.shakibaabutalebi.ir/index.php?title=%D8%B5%D9%81%D8%AD%D9%87%D9%94_%D8%A7%D8%B5%D9%84%DB%8C&amp;diff=14"/>
		<updated>2026-09-06T06:11:06Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;مدیاویکی با موفقیت نصب شد.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
برای اطلاعات بیشتر در مورد به‌کارگیری نرم‌افزار ویکی به [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents فهرست راهنمای کاربر] مراجعه کنید.&lt;br /&gt;
&lt;br /&gt;
== آغاز به کار ==&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings فهرست تنظیمات پیکربندی]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ پرسش‌های متداول مدیاویکی]&lt;br /&gt;
* [https://lists.wikimedia.org/postorius/lists/mediawiki-announce.lists.wikimedia.org/ فهرست ایمیلی نسخه‌های مدیاویکی]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources بومی‌سازی مدیاویکی برای زبان شما]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam چگونگی مقابله با اسپم در ویکی خودتان را یاد بگیرید]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.shakibaabutalebi.ir/index.php?title=%D8%A8%D8%AD%D8%AB_%D8%B1%D8%AF%D9%87:Git&amp;diff=13</id>
		<title>بحث رده:Git</title>
		<link rel="alternate" type="text/html" href="https://wiki.shakibaabutalebi.ir/index.php?title=%D8%A8%D8%AD%D8%AB_%D8%B1%D8%AF%D9%87:Git&amp;diff=13"/>
		<updated>2026-09-06T06:03:18Z</updated>

		<summary type="html">&lt;p&gt;Admin: صفحه را خالی کرد&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.shakibaabutalebi.ir/index.php?title=%D8%A8%D8%AD%D8%AB_%D8%B1%D8%AF%D9%87:Git&amp;diff=12</id>
		<title>بحث رده:Git</title>
		<link rel="alternate" type="text/html" href="https://wiki.shakibaabutalebi.ir/index.php?title=%D8%A8%D8%AD%D8%AB_%D8%B1%D8%AF%D9%87:Git&amp;diff=12"/>
		<updated>2026-09-06T05:57:42Z</updated>

		<summary type="html">&lt;p&gt;Admin: صفحه‌ای تازه حاوی «== Git == Category:Git  Git یه سیستم &amp;#039;&amp;#039;&amp;#039;کنترل نسخه (Version Control System)&amp;#039;&amp;#039;&amp;#039; هست که بهت اجازه میده تاریخچه‌ی تغییرات فایل‌ها و کدهات رو ذخیره کنی، به نسخه‌های قبلی برگردی، و با چند نفر همزمان روی یه پروژه کار کنی بدون اینکه کارها رو خراب کنید.  === مفاهیم پایه | Basic Co...» ایجاد کرد&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Git ==&lt;br /&gt;
[[Category:Git]]&lt;br /&gt;
&lt;br /&gt;
Git یه سیستم &#039;&#039;&#039;کنترل نسخه (Version Control System)&#039;&#039;&#039; هست که بهت اجازه میده تاریخچه‌ی تغییرات فایل‌ها و کدهات رو ذخیره کنی، به نسخه‌های قبلی برگردی، و با چند نفر همزمان روی یه پروژه کار کنی بدون اینکه کارها رو خراب کنید.&lt;br /&gt;
&lt;br /&gt;
=== مفاهیم پایه | Basic Concepts ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Repository (Repo)&#039;&#039;&#039;: پوشه‌ای که Git توش تاریخچه‌ی تغییرات رو ذخیره می‌کنه.&lt;br /&gt;
* &#039;&#039;&#039;Commit&#039;&#039;&#039;: یه &amp;quot;عکس لحظه‌ای&amp;quot; (snapshot) از وضعیت فایل‌ها در یه لحظه خاص، همراه با یه پیام توضیحی.&lt;br /&gt;
* &#039;&#039;&#039;Branch&#039;&#039;&#039;: یه مسیر جدا برای توسعه، که بهت اجازه میده بدون تأثیر روی نسخه‌ی اصلی، تغییرات بدی.&lt;br /&gt;
* &#039;&#039;&#039;Merge&#039;&#039;&#039;: ترکیب کردن تغییرات دو Branch با هم.&lt;br /&gt;
* &#039;&#039;&#039;Remote&#039;&#039;&#039;: نسخه‌ای از Repo که روی یه سرور دیگه (مثل GitHub) قرار داره.&lt;br /&gt;
* &#039;&#039;&#039;Working Directory&#039;&#039;&#039;: فایل‌های واقعی روی سیستم تو.&lt;br /&gt;
* &#039;&#039;&#039;Staging Area (Index)&#039;&#039;&#039;: جایی که تغییرات رو قبل از Commit کردن آماده می‌کنی.&lt;br /&gt;
&lt;br /&gt;
=== راه‌اندازی اولیه | Initial Setup ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git config --global user.name &amp;quot;نام شما&amp;quot;&lt;br /&gt;
git config --global user.email &amp;quot;you@example.com&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== شروع یه پروژه | Starting a Project ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git init                     # ساخت یه Repo جدید در پوشه فعلی&lt;br /&gt;
git clone &amp;lt;url&amp;gt;               # کپی کردن یه Repo از یه آدرس ریموت&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== چرخه‌ی اصلی کار | Basic Workflow ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git status                    # دیدن وضعیت فعلی فایل‌ها&lt;br /&gt;
git add &amp;lt;file&amp;gt;                 # اضافه کردن فایل به Staging Area&lt;br /&gt;
git add .                      # اضافه کردن همه فایل‌های تغییر یافته&lt;br /&gt;
git commit -m &amp;quot;پیام توضیحی&amp;quot;    # ثبت تغییرات&lt;br /&gt;
git log                        # دیدن تاریخچه Commit ها&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== کار با Branch ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git branch                     # لیست Branch ها&lt;br /&gt;
git branch new-feature         # ساخت Branch جدید&lt;br /&gt;
git checkout new-feature       # رفتن به یه Branch&lt;br /&gt;
git checkout -b new-feature    # ساخت و رفتن همزمان&lt;br /&gt;
git switch new-feature         # روش جدیدتر برای جابجایی بین Branch ها&lt;br /&gt;
git merge new-feature          # ادغام یه Branch با Branch فعلی&lt;br /&gt;
git branch -d new-feature      # حذف یه Branch&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== کار با Remote (مثل GitHub) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git remote add origin &amp;lt;url&amp;gt;     # اضافه کردن یه ریموت&lt;br /&gt;
git push origin main            # ارسال تغییرات به ریموت&lt;br /&gt;
git pull origin main            # دریافت و ادغام تغییرات از ریموت&lt;br /&gt;
git fetch                       # فقط دریافت تغییرات بدون ادغام&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== برگشت به عقب و اصلاح اشتباهات ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git checkout -- &amp;lt;file&amp;gt;          # لغو تغییرات یه فایل (قبل از add)&lt;br /&gt;
git reset &amp;lt;file&amp;gt;                # خارج کردن فایل از Staging Area&lt;br /&gt;
git reset --hard HEAD~1         # حذف کامل آخرین Commit (با احتیاط!)&lt;br /&gt;
git revert &amp;lt;commit-hash&amp;gt;        # ساخت یه Commit جدید که تغییرات یه Commit قبلی رو خنثی می‌کنه&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== فایل .gitignore ===&lt;br /&gt;
&lt;br /&gt;
فایلی که بهش می‌گی Git کدوم فایل‌ها/پوشه‌ها رو نادیده بگیره (مثل node_modules، فایل‌های موقت، تنظیمات شخصی).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
node_modules/&lt;br /&gt;
.env&lt;br /&gt;
*.log&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== اصطلاحات پرکاربرد دیگر ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;HEAD&#039;&#039;&#039;: اشاره‌گر به Commit یا Branch فعلی.&lt;br /&gt;
* &#039;&#039;&#039;Stash&#039;&#039;&#039;: ذخیره‌ی موقت تغییرات ناتموم بدون Commit کردن (&amp;lt;code&amp;gt;git stash&amp;lt;/code&amp;gt; و &amp;lt;code&amp;gt;git stash pop&amp;lt;/code&amp;gt;).&lt;br /&gt;
* &#039;&#039;&#039;Conflict&#039;&#039;&#039;: وقتی دو Branch تغییرات متناقض دارن و Git نمی‌تونه خودکار Merge کنه.&lt;br /&gt;
* &#039;&#039;&#039;Fork&#039;&#039;&#039;: کپی کردن یه Repo کامل به اکانت خودت روی GitHub (نه دستور Git، بلکه یه قابلیت پلتفرم).&lt;br /&gt;
* &#039;&#039;&#039;Pull Request (PR)&#039;&#039;&#039;: درخواست برای ادغام تغییرات یه Fork/Branch به پروژه اصلی، معمولاً روی GitHub.&lt;br /&gt;
&lt;br /&gt;
=== منابع بیشتر | Further Reading ===&lt;br /&gt;
&lt;br /&gt;
* [https://git-scm.com/doc مستندات رسمی Git]&lt;br /&gt;
* [https://learngitbranching.js.org/ آموزش تعاملی Git Branching]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.shakibaabutalebi.ir/index.php?title=%D8%B1%D8%AF%D9%87:Git&amp;diff=11</id>
		<title>رده:Git</title>
		<link rel="alternate" type="text/html" href="https://wiki.shakibaabutalebi.ir/index.php?title=%D8%B1%D8%AF%D9%87:Git&amp;diff=11"/>
		<updated>2026-09-06T05:57:03Z</updated>

		<summary type="html">&lt;p&gt;Admin: صفحه‌ای تازه حاوی «== Git == Category:Git  Git یه سیستم &amp;#039;&amp;#039;&amp;#039;کنترل نسخه (Version Control System)&amp;#039;&amp;#039;&amp;#039; هست که بهت اجازه میده تاریخچه‌ی تغییرات فایل‌ها و کدهات رو ذخیره کنی، به نسخه‌های قبلی برگردی، و با چند نفر همزمان روی یه پروژه کار کنی بدون اینکه کارها رو خراب کنید.  === مفاهیم پایه | Basic Co...» ایجاد کرد&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Git ==&lt;br /&gt;
[[Category:Git]]&lt;br /&gt;
&lt;br /&gt;
Git یه سیستم &#039;&#039;&#039;کنترل نسخه (Version Control System)&#039;&#039;&#039; هست که بهت اجازه میده تاریخچه‌ی تغییرات فایل‌ها و کدهات رو ذخیره کنی، به نسخه‌های قبلی برگردی، و با چند نفر همزمان روی یه پروژه کار کنی بدون اینکه کارها رو خراب کنید.&lt;br /&gt;
&lt;br /&gt;
=== مفاهیم پایه | Basic Concepts ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Repository (Repo)&#039;&#039;&#039;: پوشه‌ای که Git توش تاریخچه‌ی تغییرات رو ذخیره می‌کنه.&lt;br /&gt;
* &#039;&#039;&#039;Commit&#039;&#039;&#039;: یه &amp;quot;عکس لحظه‌ای&amp;quot; (snapshot) از وضعیت فایل‌ها در یه لحظه خاص، همراه با یه پیام توضیحی.&lt;br /&gt;
* &#039;&#039;&#039;Branch&#039;&#039;&#039;: یه مسیر جدا برای توسعه، که بهت اجازه میده بدون تأثیر روی نسخه‌ی اصلی، تغییرات بدی.&lt;br /&gt;
* &#039;&#039;&#039;Merge&#039;&#039;&#039;: ترکیب کردن تغییرات دو Branch با هم.&lt;br /&gt;
* &#039;&#039;&#039;Remote&#039;&#039;&#039;: نسخه‌ای از Repo که روی یه سرور دیگه (مثل GitHub) قرار داره.&lt;br /&gt;
* &#039;&#039;&#039;Working Directory&#039;&#039;&#039;: فایل‌های واقعی روی سیستم تو.&lt;br /&gt;
* &#039;&#039;&#039;Staging Area (Index)&#039;&#039;&#039;: جایی که تغییرات رو قبل از Commit کردن آماده می‌کنی.&lt;br /&gt;
&lt;br /&gt;
=== راه‌اندازی اولیه | Initial Setup ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git config --global user.name &amp;quot;نام شما&amp;quot;&lt;br /&gt;
git config --global user.email &amp;quot;you@example.com&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== شروع یه پروژه | Starting a Project ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git init                     # ساخت یه Repo جدید در پوشه فعلی&lt;br /&gt;
git clone &amp;lt;url&amp;gt;               # کپی کردن یه Repo از یه آدرس ریموت&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== چرخه‌ی اصلی کار | Basic Workflow ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git status                    # دیدن وضعیت فعلی فایل‌ها&lt;br /&gt;
git add &amp;lt;file&amp;gt;                 # اضافه کردن فایل به Staging Area&lt;br /&gt;
git add .                      # اضافه کردن همه فایل‌های تغییر یافته&lt;br /&gt;
git commit -m &amp;quot;پیام توضیحی&amp;quot;    # ثبت تغییرات&lt;br /&gt;
git log                        # دیدن تاریخچه Commit ها&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== کار با Branch ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git branch                     # لیست Branch ها&lt;br /&gt;
git branch new-feature         # ساخت Branch جدید&lt;br /&gt;
git checkout new-feature       # رفتن به یه Branch&lt;br /&gt;
git checkout -b new-feature    # ساخت و رفتن همزمان&lt;br /&gt;
git switch new-feature         # روش جدیدتر برای جابجایی بین Branch ها&lt;br /&gt;
git merge new-feature          # ادغام یه Branch با Branch فعلی&lt;br /&gt;
git branch -d new-feature      # حذف یه Branch&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== کار با Remote (مثل GitHub) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git remote add origin &amp;lt;url&amp;gt;     # اضافه کردن یه ریموت&lt;br /&gt;
git push origin main            # ارسال تغییرات به ریموت&lt;br /&gt;
git pull origin main            # دریافت و ادغام تغییرات از ریموت&lt;br /&gt;
git fetch                       # فقط دریافت تغییرات بدون ادغام&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== برگشت به عقب و اصلاح اشتباهات ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git checkout -- &amp;lt;file&amp;gt;          # لغو تغییرات یه فایل (قبل از add)&lt;br /&gt;
git reset &amp;lt;file&amp;gt;                # خارج کردن فایل از Staging Area&lt;br /&gt;
git reset --hard HEAD~1         # حذف کامل آخرین Commit (با احتیاط!)&lt;br /&gt;
git revert &amp;lt;commit-hash&amp;gt;        # ساخت یه Commit جدید که تغییرات یه Commit قبلی رو خنثی می‌کنه&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== فایل .gitignore ===&lt;br /&gt;
&lt;br /&gt;
فایلی که بهش می‌گی Git کدوم فایل‌ها/پوشه‌ها رو نادیده بگیره (مثل node_modules، فایل‌های موقت، تنظیمات شخصی).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
node_modules/&lt;br /&gt;
.env&lt;br /&gt;
*.log&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== اصطلاحات پرکاربرد دیگر ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;HEAD&#039;&#039;&#039;: اشاره‌گر به Commit یا Branch فعلی.&lt;br /&gt;
* &#039;&#039;&#039;Stash&#039;&#039;&#039;: ذخیره‌ی موقت تغییرات ناتموم بدون Commit کردن (&amp;lt;code&amp;gt;git stash&amp;lt;/code&amp;gt; و &amp;lt;code&amp;gt;git stash pop&amp;lt;/code&amp;gt;).&lt;br /&gt;
* &#039;&#039;&#039;Conflict&#039;&#039;&#039;: وقتی دو Branch تغییرات متناقض دارن و Git نمی‌تونه خودکار Merge کنه.&lt;br /&gt;
* &#039;&#039;&#039;Fork&#039;&#039;&#039;: کپی کردن یه Repo کامل به اکانت خودت روی GitHub (نه دستور Git، بلکه یه قابلیت پلتفرم).&lt;br /&gt;
* &#039;&#039;&#039;Pull Request (PR)&#039;&#039;&#039;: درخواست برای ادغام تغییرات یه Fork/Branch به پروژه اصلی، معمولاً روی GitHub.&lt;br /&gt;
&lt;br /&gt;
=== منابع بیشتر | Further Reading ===&lt;br /&gt;
&lt;br /&gt;
* [https://git-scm.com/doc مستندات رسمی Git]&lt;br /&gt;
* [https://learngitbranching.js.org/ آموزش تعاملی Git Branching]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.shakibaabutalebi.ir/index.php?title=%D8%B5%D9%81%D8%AD%D9%87_%D8%A7%D8%B5%D9%84%DB%8C&amp;diff=10</id>
		<title>صفحه اصلی</title>
		<link rel="alternate" type="text/html" href="https://wiki.shakibaabutalebi.ir/index.php?title=%D8%B5%D9%81%D8%AD%D9%87_%D8%A7%D8%B5%D9%84%DB%8C&amp;diff=10"/>
		<updated>2026-09-06T05:54:34Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* ویکی شکیبا | Shakiba Wiki */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;مدیاویکی با موفقیت نصب شد.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
برای اطلاعات بیشتر در مورد به‌کارگیری نرم‌افزار ویکی به [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents فهرست راهنمای کاربر] مراجعه کنید.&lt;br /&gt;
&lt;br /&gt;
== آغاز به کار ==&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings فهرست تنظیمات پیکربندی]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ پرسش‌های متداول مدیاویکی]&lt;br /&gt;
* [https://lists.wikimedia.org/postorius/lists/mediawiki-announce.lists.wikimedia.org/ فهرست ایمیلی نسخه‌های مدیاویکی]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources بومی‌سازی مدیاویکی برای زبان شما]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam چگونگی مقابله با اسپم در ویکی خودتان را یاد بگیرید]&lt;br /&gt;
&lt;br /&gt;
=== دسته‌بندی‌ها | Categories ===&lt;br /&gt;
&lt;br /&gt;
* [[:Category:Git|Git]]&lt;br /&gt;
* [[:Category:WordPress|طراحی سایت با وردپرس | WordPress Design]]&lt;br /&gt;
* [[:Category:CMD|خط فرمان | CMD]]&lt;br /&gt;
* [[:Category:Prompt Engineering|پرامپت‌نویسی | Prompt Engineering]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.shakibaabutalebi.ir/index.php?title=%D8%B5%D9%81%D8%AD%D9%87_%D8%A7%D8%B5%D9%84%DB%8C&amp;diff=9</id>
		<title>صفحه اصلی</title>
		<link rel="alternate" type="text/html" href="https://wiki.shakibaabutalebi.ir/index.php?title=%D8%B5%D9%81%D8%AD%D9%87_%D8%A7%D8%B5%D9%84%DB%8C&amp;diff=9"/>
		<updated>2026-09-06T05:53:59Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* ویکی شکیبا | Shakiba Wiki */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;مدیاویکی با موفقیت نصب شد.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
برای اطلاعات بیشتر در مورد به‌کارگیری نرم‌افزار ویکی به [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents فهرست راهنمای کاربر] مراجعه کنید.&lt;br /&gt;
&lt;br /&gt;
== آغاز به کار ==&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings فهرست تنظیمات پیکربندی]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ پرسش‌های متداول مدیاویکی]&lt;br /&gt;
* [https://lists.wikimedia.org/postorius/lists/mediawiki-announce.lists.wikimedia.org/ فهرست ایمیلی نسخه‌های مدیاویکی]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources بومی‌سازی مدیاویکی برای زبان شما]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam چگونگی مقابله با اسپم در ویکی خودتان را یاد بگیرید]&lt;br /&gt;
&lt;br /&gt;
== ویکی شکیبا | Shakiba Wiki ==&lt;br /&gt;
&lt;br /&gt;
به ویکی شخصی من خوش اومدی. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== دسته‌بندی‌ها | Categories ===&lt;br /&gt;
&lt;br /&gt;
* [[:Category:Git|Git]]&lt;br /&gt;
* [[:Category:WordPress|طراحی سایت با وردپرس | WordPress Design]]&lt;br /&gt;
* [[:Category:CMD|خط فرمان | CMD]]&lt;br /&gt;
* [[:Category:Prompt Engineering|پرامپت‌نویسی | Prompt Engineering]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.shakibaabutalebi.ir/index.php?title=%D8%B5%D9%81%D8%AD%D9%87_%D8%A7%D8%B5%D9%84%DB%8C&amp;diff=8</id>
		<title>صفحه اصلی</title>
		<link rel="alternate" type="text/html" href="https://wiki.shakibaabutalebi.ir/index.php?title=%D8%B5%D9%81%D8%AD%D9%87_%D8%A7%D8%B5%D9%84%DB%8C&amp;diff=8"/>
		<updated>2026-09-06T05:52:02Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* آغاز به کار */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;مدیاویکی با موفقیت نصب شد.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
برای اطلاعات بیشتر در مورد به‌کارگیری نرم‌افزار ویکی به [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents فهرست راهنمای کاربر] مراجعه کنید.&lt;br /&gt;
&lt;br /&gt;
== آغاز به کار ==&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings فهرست تنظیمات پیکربندی]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ پرسش‌های متداول مدیاویکی]&lt;br /&gt;
* [https://lists.wikimedia.org/postorius/lists/mediawiki-announce.lists.wikimedia.org/ فهرست ایمیلی نسخه‌های مدیاویکی]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources بومی‌سازی مدیاویکی برای زبان شما]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam چگونگی مقابله با اسپم در ویکی خودتان را یاد بگیرید]&lt;br /&gt;
&lt;br /&gt;
== ویکی شکیبا | Shakiba Wiki ==&lt;br /&gt;
&lt;br /&gt;
به ویکی شخصی من خوش اومدی. اینجا هرچی درباره‌ی گیت، طراحی سایت با وردپرس، خط فرمان (CMD) و پرامپت‌نویسی یاد می‌گیرم رو یادداشت می‌کنم.&lt;br /&gt;
&lt;br /&gt;
Welcome to my personal wiki. This is where I document everything I learn about Git, WordPress site design, the command line (CMD), and prompt engineering.&lt;br /&gt;
&lt;br /&gt;
=== دسته‌بندی‌ها | Categories ===&lt;br /&gt;
&lt;br /&gt;
* [[:Category:Git|Git]]&lt;br /&gt;
* [[:Category:WordPress|طراحی سایت با وردپرس | WordPress Design]]&lt;br /&gt;
* [[:Category:CMD|خط فرمان | CMD]]&lt;br /&gt;
* [[:Category:Prompt Engineering|پرامپت‌نویسی | Prompt Engineering]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.shakibaabutalebi.ir/index.php?title=%D8%B5%D9%81%D8%AD%D9%87_%D8%A7%D8%B5%D9%84%DB%8C&amp;diff=7</id>
		<title>صفحه اصلی</title>
		<link rel="alternate" type="text/html" href="https://wiki.shakibaabutalebi.ir/index.php?title=%D8%B5%D9%81%D8%AD%D9%87_%D8%A7%D8%B5%D9%84%DB%8C&amp;diff=7"/>
		<updated>2026-09-06T05:25:30Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;مدیاویکی با موفقیت نصب شد.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
برای اطلاعات بیشتر در مورد به‌کارگیری نرم‌افزار ویکی به [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents فهرست راهنمای کاربر] مراجعه کنید.&lt;br /&gt;
&lt;br /&gt;
== آغاز به کار ==&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings فهرست تنظیمات پیکربندی]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ پرسش‌های متداول مدیاویکی]&lt;br /&gt;
* [https://lists.wikimedia.org/postorius/lists/mediawiki-announce.lists.wikimedia.org/ فهرست ایمیلی نسخه‌های مدیاویکی]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources بومی‌سازی مدیاویکی برای زبان شما]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam چگونگی مقابله با اسپم در ویکی خودتان را یاد بگیرید]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.shakibaabutalebi.ir/index.php?title=%D8%A8%D8%AD%D8%AB:%D8%B5%D9%81%D8%AD%D9%87%D9%94_%D8%A7%D8%B5%D9%84%DB%8C&amp;diff=6</id>
		<title>بحث:صفحهٔ اصلی</title>
		<link rel="alternate" type="text/html" href="https://wiki.shakibaabutalebi.ir/index.php?title=%D8%A8%D8%AD%D8%AB:%D8%B5%D9%81%D8%AD%D9%87%D9%94_%D8%A7%D8%B5%D9%84%DB%8C&amp;diff=6"/>
		<updated>2026-09-06T05:07:01Z</updated>

		<summary type="html">&lt;p&gt;Admin: صفحه‌ای تازه حاوی «گیت نرم افزاری که کمک می کند source code را مدیریت کنیم.» ایجاد کرد&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;گیت&lt;br /&gt;
نرم افزاری که کمک می کند source code را مدیریت کنیم.&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.shakibaabutalebi.ir/index.php?title=%D8%B5%D9%81%D8%AD%D9%87_%D8%A7%D8%B5%D9%84%DB%8C&amp;diff=5</id>
		<title>صفحه اصلی</title>
		<link rel="alternate" type="text/html" href="https://wiki.shakibaabutalebi.ir/index.php?title=%D8%B5%D9%81%D8%AD%D9%87_%D8%A7%D8%B5%D9%84%DB%8C&amp;diff=5"/>
		<updated>2026-09-05T09:33:57Z</updated>

		<summary type="html">&lt;p&gt;Admin: صفحه را خالی کرد&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.shakibaabutalebi.ir/index.php?title=%D8%B5%D9%81%D8%AD%D9%87_%D8%A7%D8%B5%D9%84%DB%8C&amp;diff=4</id>
		<title>صفحه اصلی</title>
		<link rel="alternate" type="text/html" href="https://wiki.shakibaabutalebi.ir/index.php?title=%D8%B5%D9%81%D8%AD%D9%87_%D8%A7%D8%B5%D9%84%DB%8C&amp;diff=4"/>
		<updated>2026-09-05T09:31:07Z</updated>

		<summary type="html">&lt;p&gt;Admin: صفحه‌ای تازه حاوی «&amp;lt;!DOCTYPE html&amp;gt; &amp;lt;html lang=&amp;quot;fa&amp;quot; dir=&amp;quot;rtl&amp;quot;&amp;gt; &amp;lt;head&amp;gt;   &amp;lt;meta charset=&amp;quot;UTF-8&amp;quot;&amp;gt;   &amp;lt;meta name=&amp;quot;viewport&amp;quot; content=&amp;quot;width=device-width, initial-scale=1.0&amp;quot;&amp;gt;   &amp;lt;title&amp;gt;ویکی شخصی من&amp;lt;/title&amp;gt;   &amp;lt;style&amp;gt;     @import url(&amp;#039;https://fonts.googleapis.com/css2?family=Vazirmatn:wght@300;400;500;600;700&amp;amp;display=swap&amp;#039;);      * { margin: 0; padding: 0; box-sizing: border-box; }      :root {       --bg: #f8f9fa;       --surface: #ffffff;       --sideba...» ایجاد کرد&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html lang=&amp;quot;fa&amp;quot; dir=&amp;quot;rtl&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
  &amp;lt;meta charset=&amp;quot;UTF-8&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;meta name=&amp;quot;viewport&amp;quot; content=&amp;quot;width=device-width, initial-scale=1.0&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;title&amp;gt;ویکی شخصی من&amp;lt;/title&amp;gt;&lt;br /&gt;
  &amp;lt;style&amp;gt;&lt;br /&gt;
    @import url(&#039;https://fonts.googleapis.com/css2?family=Vazirmatn:wght@300;400;500;600;700&amp;amp;display=swap&#039;);&lt;br /&gt;
&lt;br /&gt;
    * { margin: 0; padding: 0; box-sizing: border-box; }&lt;br /&gt;
&lt;br /&gt;
    :root {&lt;br /&gt;
      --bg: #f8f9fa;&lt;br /&gt;
      --surface: #ffffff;&lt;br /&gt;
      --sidebar-bg: #f0f2f5;&lt;br /&gt;
      --border: #a2a9b1;&lt;br /&gt;
      --border-light: #c8ccd1;&lt;br /&gt;
      --text: #202122;&lt;br /&gt;
      --text-muted: #54595d;&lt;br /&gt;
      --text-light: #72777d;&lt;br /&gt;
      --accent: #3366cc;&lt;br /&gt;
      --accent-hover: #2a4b8d;&lt;br /&gt;
      --accent-visited: #795cb2;&lt;br /&gt;
      --link: #0645ad;&lt;br /&gt;
      --link-hover: #0b0080;&lt;br /&gt;
      --link-visited: #0b0080;&lt;br /&gt;
      --tab-bg: #eaecf0;&lt;br /&gt;
      --tab-active: #ffffff;&lt;br /&gt;
      --toc-bg: #f8f9fa;&lt;br /&gt;
      --toc-border: #a2a9b1;&lt;br /&gt;
      --danger: #b32424;&lt;br /&gt;
      --success: #14866d;&lt;br /&gt;
      --warning: #e07d10;&lt;br /&gt;
      --tag-green: #14866d;&lt;br /&gt;
      --tag-blue: #3366cc;&lt;br /&gt;
      --tag-orange: #b7570a;&lt;br /&gt;
      --tag-purple: #795cb2;&lt;br /&gt;
      --shadow: 0 1px 3px rgba(0,0,0,0.08);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    body {&lt;br /&gt;
      font-family: &#039;Vazirmatn&#039;, sans-serif;&lt;br /&gt;
      background: var(--bg);&lt;br /&gt;
      color: var(--text);&lt;br /&gt;
      font-size: 14px;&lt;br /&gt;
      line-height: 1.7;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    a { color: var(--link); text-decoration: none; }&lt;br /&gt;
    a:hover { text-decoration: underline; color: var(--link-hover); }&lt;br /&gt;
&lt;br /&gt;
    /* === Personal Bar (top) === */&lt;br /&gt;
    .personal-bar {&lt;br /&gt;
      background: var(--surface);&lt;br /&gt;
      border-bottom: 1px solid var(--border-light);&lt;br /&gt;
      padding: 0.25rem 1rem;&lt;br /&gt;
      font-size: 0.82rem;&lt;br /&gt;
      display: flex;&lt;br /&gt;
      justify-content: flex-start;&lt;br /&gt;
      align-items: center;&lt;br /&gt;
      gap: 1rem;&lt;br /&gt;
      color: var(--text-muted);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .personal-bar a { color: var(--link); font-size: 0.82rem; }&lt;br /&gt;
&lt;br /&gt;
    /* === Main Header === */&lt;br /&gt;
    .wiki-header {&lt;br /&gt;
      background: var(--surface);&lt;br /&gt;
      padding: 0.8rem 1.5rem;&lt;br /&gt;
      display: flex;&lt;br /&gt;
      align-items: center;&lt;br /&gt;
      justify-content: space-between;&lt;br /&gt;
      border-bottom: 3px solid var(--accent);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .wiki-logo {&lt;br /&gt;
      display: flex;&lt;br /&gt;
      align-items: center;&lt;br /&gt;
      gap: 0.75rem;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .wiki-logo-icon {&lt;br /&gt;
      width: 50px;&lt;br /&gt;
      height: 50px;&lt;br /&gt;
      background: var(--accent);&lt;br /&gt;
      border-radius: 50%;&lt;br /&gt;
      display: flex;&lt;br /&gt;
      align-items: center;&lt;br /&gt;
      justify-content: center;&lt;br /&gt;
      color: white;&lt;br /&gt;
      font-size: 1.6rem;&lt;br /&gt;
      font-weight: 700;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .wiki-logo h1 {&lt;br /&gt;
      font-size: 1.5rem;&lt;br /&gt;
      font-weight: 400;&lt;br /&gt;
      color: var(--text);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .wiki-logo h1 span {&lt;br /&gt;
      font-weight: 700;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .header-search {&lt;br /&gt;
      display: flex;&lt;br /&gt;
      align-items: center;&lt;br /&gt;
      gap: 0.4rem;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .header-search input {&lt;br /&gt;
      padding: 0.45rem 0.8rem;&lt;br /&gt;
      border: 1px solid var(--border);&lt;br /&gt;
      border-radius: 2px;&lt;br /&gt;
      font-family: inherit;&lt;br /&gt;
      font-size: 0.9rem;&lt;br /&gt;
      width: 300px;&lt;br /&gt;
      direction: rtl;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .header-search input:focus {&lt;br /&gt;
      outline: none;&lt;br /&gt;
      border-color: var(--accent);&lt;br /&gt;
      box-shadow: 0 0 0 2px rgba(51,102,204,0.15);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .header-search button {&lt;br /&gt;
      padding: 0.45rem 0.8rem;&lt;br /&gt;
      background: var(--accent);&lt;br /&gt;
      color: white;&lt;br /&gt;
      border: 1px solid var(--accent);&lt;br /&gt;
      font-family: inherit;&lt;br /&gt;
      font-size: 0.85rem;&lt;br /&gt;
      cursor: pointer;&lt;br /&gt;
      border-radius: 2px;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .header-search button:hover { background: var(--accent-hover); }&lt;br /&gt;
&lt;br /&gt;
    /* === Body Layout === */&lt;br /&gt;
    .wiki-body {&lt;br /&gt;
      display: flex;&lt;br /&gt;
      max-width: 1400px;&lt;br /&gt;
      margin: 0 auto;&lt;br /&gt;
      min-height: calc(100vh - 120px);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* === Sidebar === */&lt;br /&gt;
    .wiki-sidebar {&lt;br /&gt;
      width: 220px;&lt;br /&gt;
      min-width: 220px;&lt;br /&gt;
      background: var(--surface);&lt;br /&gt;
      border-left: 1px solid var(--border-light);&lt;br /&gt;
      padding: 1rem 0;&lt;br /&gt;
      font-size: 0.88rem;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .sidebar-section {&lt;br /&gt;
      margin-bottom: 0.5rem;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .sidebar-section h4 {&lt;br /&gt;
      padding: 0.4rem 1rem;&lt;br /&gt;
      font-size: 0.78rem;&lt;br /&gt;
      font-weight: 700;&lt;br /&gt;
      color: var(--text-muted);&lt;br /&gt;
      text-transform: uppercase;&lt;br /&gt;
      letter-spacing: 0.05em;&lt;br /&gt;
      background: var(--tab-bg);&lt;br /&gt;
      border-top: 1px solid var(--border-light);&lt;br /&gt;
      border-bottom: 1px solid var(--border-light);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .sidebar-section ul {&lt;br /&gt;
      list-style: none;&lt;br /&gt;
      padding: 0.3rem 0;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .sidebar-section li a {&lt;br /&gt;
      display: block;&lt;br /&gt;
      padding: 0.3rem 1rem;&lt;br /&gt;
      color: var(--accent);&lt;br /&gt;
      transition: background 0.15s;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .sidebar-section li a:hover {&lt;br /&gt;
      background: var(--tab-bg);&lt;br /&gt;
      text-decoration: none;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .sidebar-section li a.active-page {&lt;br /&gt;
      background: var(--accent);&lt;br /&gt;
      color: white;&lt;br /&gt;
      font-weight: 500;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .sidebar-search {&lt;br /&gt;
      padding: 0.5rem 1rem;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .sidebar-search input {&lt;br /&gt;
      width: 100%;&lt;br /&gt;
      padding: 0.35rem 0.6rem;&lt;br /&gt;
      border: 1px solid var(--border);&lt;br /&gt;
      font-family: inherit;&lt;br /&gt;
      font-size: 0.85rem;&lt;br /&gt;
      direction: rtl;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .sidebar-search input:focus {&lt;br /&gt;
      outline: none;&lt;br /&gt;
      border-color: var(--accent);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .sidebar-search button {&lt;br /&gt;
      width: 100%;&lt;br /&gt;
      margin-top: 0.3rem;&lt;br /&gt;
      padding: 0.3rem;&lt;br /&gt;
      background: var(--tab-bg);&lt;br /&gt;
      border: 1px solid var(--border);&lt;br /&gt;
      font-family: inherit;&lt;br /&gt;
      font-size: 0.82rem;&lt;br /&gt;
      cursor: pointer;&lt;br /&gt;
      color: var(--text-muted);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .sidebar-search button:hover { background: var(--border-light); }&lt;br /&gt;
&lt;br /&gt;
    /* === Content Area === */&lt;br /&gt;
    .wiki-content {&lt;br /&gt;
      flex: 1;&lt;br /&gt;
      min-width: 0;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* Tabs */&lt;br /&gt;
    .content-tabs {&lt;br /&gt;
      display: flex;&lt;br /&gt;
      background: var(--tab-bg);&lt;br /&gt;
      border-bottom: 1px solid var(--border-light);&lt;br /&gt;
      padding: 0 1rem;&lt;br /&gt;
      gap: 0;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .content-tab {&lt;br /&gt;
      padding: 0.5rem 1rem;&lt;br /&gt;
      font-size: 0.88rem;&lt;br /&gt;
      color: var(--text-muted);&lt;br /&gt;
      cursor: pointer;&lt;br /&gt;
      border: 1px solid transparent;&lt;br /&gt;
      border-bottom: none;&lt;br /&gt;
      background: none;&lt;br /&gt;
      font-family: inherit;&lt;br /&gt;
      border-radius: 2px 2px 0 0;&lt;br /&gt;
      position: relative;&lt;br /&gt;
      top: 1px;&lt;br /&gt;
      transition: background 0.15s;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .content-tab:hover {&lt;br /&gt;
      background: var(--surface);&lt;br /&gt;
      color: var(--text);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .content-tab.active {&lt;br /&gt;
      background: var(--surface);&lt;br /&gt;
      color: var(--text);&lt;br /&gt;
      border-color: var(--border-light);&lt;br /&gt;
      border-bottom-color: var(--surface);&lt;br /&gt;
      font-weight: 500;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* Article Content */&lt;br /&gt;
    .article-body {&lt;br /&gt;
      background: var(--surface);&lt;br /&gt;
      border: 1px solid var(--border-light);&lt;br /&gt;
      border-top: none;&lt;br /&gt;
      padding: 1.5rem 2rem;&lt;br /&gt;
      min-height: 400px;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .article-body h1.article-title {&lt;br /&gt;
      font-size: 1.8rem;&lt;br /&gt;
      font-weight: 400;&lt;br /&gt;
      border-bottom: 1px solid var(--border-light);&lt;br /&gt;
      padding-bottom: 0.3rem;&lt;br /&gt;
      margin-bottom: 1rem;&lt;br /&gt;
      line-height: 1.4;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .article-intro {&lt;br /&gt;
      margin-bottom: 1.5rem;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* Table of Contents */&lt;br /&gt;
    .toc {&lt;br /&gt;
      background: var(--toc-bg);&lt;br /&gt;
      border: 1px solid var(--toc-border);&lt;br /&gt;
      padding: 0.8rem 1rem;&lt;br /&gt;
      display: inline-block;&lt;br /&gt;
      margin: 0 0 1.5rem;&lt;br /&gt;
      min-width: 200px;&lt;br /&gt;
      font-size: 0.9rem;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .toc-title {&lt;br /&gt;
      font-weight: 700;&lt;br /&gt;
      text-align: center;&lt;br /&gt;
      margin-bottom: 0.3rem;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .toc-toggle {&lt;br /&gt;
      font-size: 0.82rem;&lt;br /&gt;
      color: var(--link);&lt;br /&gt;
      cursor: pointer;&lt;br /&gt;
      margin-right: 0.3rem;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .toc ol {&lt;br /&gt;
      margin: 0;&lt;br /&gt;
      padding-right: 1.2rem;&lt;br /&gt;
      list-style-type: decimal;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .toc ol ol {&lt;br /&gt;
      list-style-type: decimal;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .toc li {&lt;br /&gt;
      margin: 0.2rem 0;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .toc li a {&lt;br /&gt;
      color: var(--link);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* Section Headings */&lt;br /&gt;
    .wiki-heading {&lt;br /&gt;
      display: flex;&lt;br /&gt;
      align-items: baseline;&lt;br /&gt;
      border-bottom: 1px solid var(--border-light);&lt;br /&gt;
      margin: 1.5rem 0 0.8rem;&lt;br /&gt;
      padding-bottom: 0.2rem;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .wiki-heading h2 {&lt;br /&gt;
      font-size: 1.4rem;&lt;br /&gt;
      font-weight: 400;&lt;br /&gt;
      flex: 1;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .wiki-heading .edit-section {&lt;br /&gt;
      font-size: 0.82rem;&lt;br /&gt;
      color: var(--text-light);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .wiki-heading h3 {&lt;br /&gt;
      font-size: 1.15rem;&lt;br /&gt;
      font-weight: 700;&lt;br /&gt;
      flex: 1;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .wiki-heading h3::after {&lt;br /&gt;
      content: &#039;&#039;;&lt;br /&gt;
      display: none;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .article-body p {&lt;br /&gt;
      margin-bottom: 0.8rem;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .article-body ul, .article-body ol {&lt;br /&gt;
      margin: 0.5rem 0 0.8rem 2rem;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .article-body li {&lt;br /&gt;
      margin-bottom: 0.3rem;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* Category Box */&lt;br /&gt;
    .catlinks {&lt;br /&gt;
      background: var(--toc-bg);&lt;br /&gt;
      border: 1px solid var(--border-light);&lt;br /&gt;
      padding: 0.5rem 1rem;&lt;br /&gt;
      margin-top: 2rem;&lt;br /&gt;
      font-size: 0.85rem;&lt;br /&gt;
      display: flex;&lt;br /&gt;
      gap: 0.5rem;&lt;br /&gt;
      flex-wrap: wrap;&lt;br /&gt;
      align-items: center;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .catlinks strong { margin-left: 0.3rem; }&lt;br /&gt;
&lt;br /&gt;
    .catlinks a {&lt;br /&gt;
      background: var(--tab-bg);&lt;br /&gt;
      padding: 0.15rem 0.5rem;&lt;br /&gt;
      border-radius: 2px;&lt;br /&gt;
      font-size: 0.82rem;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* Page Footer */&lt;br /&gt;
    .page-footer {&lt;br /&gt;
      background: var(--surface);&lt;br /&gt;
      border-top: 1px solid var(--border-light);&lt;br /&gt;
      padding: 1rem 2rem;&lt;br /&gt;
      font-size: 0.82rem;&lt;br /&gt;
      color: var(--text-light);&lt;br /&gt;
      text-align: center;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* === Wiki Text Formatting === */&lt;br /&gt;
    .wiki-bold { font-weight: 700; }&lt;br /&gt;
    .wiki-italic { font-style: italic; }&lt;br /&gt;
&lt;br /&gt;
    code {&lt;br /&gt;
      background: var(--toc-bg);&lt;br /&gt;
      padding: 0.1rem 0.35rem;&lt;br /&gt;
      border: 1px solid var(--border-light);&lt;br /&gt;
      font-size: 0.92em;&lt;br /&gt;
      border-radius: 2px;&lt;br /&gt;
      font-family: monospace;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    pre {&lt;br /&gt;
      background: var(--toc-bg);&lt;br /&gt;
      border: 1px solid var(--border-light);&lt;br /&gt;
      padding: 0.8rem 1rem;&lt;br /&gt;
      overflow-x: auto;&lt;br /&gt;
      font-size: 0.9rem;&lt;br /&gt;
      margin: 0.8rem 0;&lt;br /&gt;
      border-radius: 2px;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    pre code {&lt;br /&gt;
      background: none;&lt;br /&gt;
      border: none;&lt;br /&gt;
      padding: 0;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    blockquote {&lt;br /&gt;
      border-right: 3px solid var(--accent);&lt;br /&gt;
      padding-right: 1rem;&lt;br /&gt;
      margin: 0.8rem 0;&lt;br /&gt;
      color: var(--text-muted);&lt;br /&gt;
      background: var(--toc-bg);&lt;br /&gt;
      padding: 0.5rem 1rem;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* Info Box */&lt;br /&gt;
    .infobox {&lt;br /&gt;
      float: left;&lt;br /&gt;
      clear: right;&lt;br /&gt;
      margin: 0 0 1rem 1.5rem;&lt;br /&gt;
      border: 1px solid var(--border-light);&lt;br /&gt;
      border-collapse: collapse;&lt;br /&gt;
      background: var(--surface);&lt;br /&gt;
      font-size: 0.88rem;&lt;br /&gt;
      width: 280px;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .infobox-header {&lt;br /&gt;
      background: var(--accent);&lt;br /&gt;
      color: white;&lt;br /&gt;
      padding: 0.5rem 0.8rem;&lt;br /&gt;
      text-align: center;&lt;br /&gt;
      font-weight: 700;&lt;br /&gt;
      font-size: 1rem;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .infobox td, .infobox th {&lt;br /&gt;
      padding: 0.3rem 0.6rem;&lt;br /&gt;
      border: 1px solid var(--border-light);&lt;br /&gt;
      vertical-align: top;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .infobox th {&lt;br /&gt;
      background: var(--toc-bg);&lt;br /&gt;
      text-align: right;&lt;br /&gt;
      font-weight: 500;&lt;br /&gt;
      width: 35%;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* Alert Boxes */&lt;br /&gt;
    .ambox {&lt;br /&gt;
      border: 1px solid var(--border-light);&lt;br /&gt;
      background: var(--toc-bg);&lt;br /&gt;
      padding: 0.6rem 1rem;&lt;br /&gt;
      margin: 0.8rem 0;&lt;br /&gt;
      font-size: 0.88rem;&lt;br /&gt;
      display: flex;&lt;br /&gt;
      align-items: center;&lt;br /&gt;
      gap: 0.6rem;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .ambox-icon { font-size: 1.3rem; }&lt;br /&gt;
&lt;br /&gt;
    /* Editor (Modal) */&lt;br /&gt;
    .modal-overlay {&lt;br /&gt;
      display: none;&lt;br /&gt;
      position: fixed;&lt;br /&gt;
      inset: 0;&lt;br /&gt;
      background: rgba(0,0,0,0.5);&lt;br /&gt;
      z-index: 200;&lt;br /&gt;
      align-items: center;&lt;br /&gt;
      justify-content: center;&lt;br /&gt;
      padding: 1rem;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .modal-overlay.show { display: flex; }&lt;br /&gt;
&lt;br /&gt;
    .modal {&lt;br /&gt;
      background: var(--surface);&lt;br /&gt;
      border: 1px solid var(--border);&lt;br /&gt;
      width: 100%;&lt;br /&gt;
      max-width: 800px;&lt;br /&gt;
      max-height: 90vh;&lt;br /&gt;
      overflow-y: auto;&lt;br /&gt;
      border-radius: 2px;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .modal-header {&lt;br /&gt;
      background: var(--tab-bg);&lt;br /&gt;
      padding: 0.6rem 1rem;&lt;br /&gt;
      border-bottom: 1px solid var(--border-light);&lt;br /&gt;
      display: flex;&lt;br /&gt;
      align-items: center;&lt;br /&gt;
      justify-content: space-between;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .modal-header h3 { font-size: 1rem; font-weight: 500; }&lt;br /&gt;
&lt;br /&gt;
    .modal-body { padding: 1.2rem; }&lt;br /&gt;
&lt;br /&gt;
    .form-group { margin-bottom: 1rem; }&lt;br /&gt;
&lt;br /&gt;
    .form-group label {&lt;br /&gt;
      display: block;&lt;br /&gt;
      font-size: 0.85rem;&lt;br /&gt;
      font-weight: 500;&lt;br /&gt;
      margin-bottom: 0.3rem;&lt;br /&gt;
      color: var(--text-muted);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .form-group input,&lt;br /&gt;
    .form-group textarea,&lt;br /&gt;
    .form-group select {&lt;br /&gt;
      width: 100%;&lt;br /&gt;
      padding: 0.5rem 0.7rem;&lt;br /&gt;
      border: 1px solid var(--border);&lt;br /&gt;
      font-family: inherit;&lt;br /&gt;
      font-size: 0.95rem;&lt;br /&gt;
      direction: rtl;&lt;br /&gt;
      border-radius: 2px;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .form-group textarea {&lt;br /&gt;
      min-height: 300px;&lt;br /&gt;
      resize: vertical;&lt;br /&gt;
      font-family: monospace;&lt;br /&gt;
      font-size: 0.9rem;&lt;br /&gt;
      line-height: 1.8;&lt;br /&gt;
      direction: ltr;&lt;br /&gt;
      text-align: left;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .form-group input:focus,&lt;br /&gt;
    .form-group textarea:focus,&lt;br /&gt;
    .form-group select:focus {&lt;br /&gt;
      outline: none;&lt;br /&gt;
      border-color: var(--accent);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .modal-actions {&lt;br /&gt;
      display: flex;&lt;br /&gt;
      gap: 0.5rem;&lt;br /&gt;
      padding: 0.6rem 1rem;&lt;br /&gt;
      background: var(--tab-bg);&lt;br /&gt;
      border-top: 1px solid var(--border-light);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .modal-actions button {&lt;br /&gt;
      padding: 0.4rem 1rem;&lt;br /&gt;
      font-family: inherit;&lt;br /&gt;
      font-size: 0.85rem;&lt;br /&gt;
      cursor: pointer;&lt;br /&gt;
      border-radius: 2px;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .btn-save {&lt;br /&gt;
      background: var(--accent);&lt;br /&gt;
      color: white;&lt;br /&gt;
      border: 1px solid var(--accent);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .btn-save:hover { background: var(--accent-hover); }&lt;br /&gt;
&lt;br /&gt;
    .btn-cancel {&lt;br /&gt;
      background: var(--tab-bg);&lt;br /&gt;
      color: var(--text);&lt;br /&gt;
      border: 1px solid var(--border);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .btn-cancel:hover { background: var(--border-light); }&lt;br /&gt;
&lt;br /&gt;
    .btn-delete {&lt;br /&gt;
      background: var(--danger);&lt;br /&gt;
      color: white;&lt;br /&gt;
      border: 1px solid var(--danger);&lt;br /&gt;
      margin-right: auto;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .btn-delete:hover { background: #9b1b1b; }&lt;br /&gt;
&lt;br /&gt;
    /* Footer nav */&lt;br /&gt;
    .footer-nav {&lt;br /&gt;
      background: var(--surface);&lt;br /&gt;
      border-top: 1px solid var(--border-light);&lt;br /&gt;
      padding: 0.5rem 1rem;&lt;br /&gt;
      display: flex;&lt;br /&gt;
      justify-content: center;&lt;br /&gt;
      gap: 1.5rem;&lt;br /&gt;
      font-size: 0.82rem;&lt;br /&gt;
      color: var(--text-light);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .footer-nav a { color: var(--link); }&lt;br /&gt;
&lt;br /&gt;
    /* Special pages list */&lt;br /&gt;
    .special-list {&lt;br /&gt;
      list-style: none;&lt;br /&gt;
      padding: 0;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .special-list li {&lt;br /&gt;
      padding: 0.4rem 0;&lt;br /&gt;
      border-bottom: 1px dotted var(--border-light);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .special-list li:last-child { border-bottom: none; }&lt;br /&gt;
&lt;br /&gt;
    .special-list a {&lt;br /&gt;
      font-weight: 500;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .special-list .desc {&lt;br /&gt;
      color: var(--text-muted);&lt;br /&gt;
      font-size: 0.88rem;&lt;br /&gt;
      margin-right: 0.5rem;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* Responsive */&lt;br /&gt;
    @media (max-width: 900px) {&lt;br /&gt;
      .wiki-sidebar { display: none; }&lt;br /&gt;
      .header-search input { width: 180px; }&lt;br /&gt;
      .article-body { padding: 1rem; }&lt;br /&gt;
      .infobox { float: none; width: 100%; margin: 0 0 1rem; }&lt;br /&gt;
    }&lt;br /&gt;
  &amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;!-- Personal Toolbar --&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;personal-bar&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;span&amp;gt;👤 کاربر مهمان&amp;lt;/span&amp;gt;&lt;br /&gt;
    &amp;lt;a href=&amp;quot;#&amp;quot; onclick=&amp;quot;openCreateModal(); return false;&amp;quot;&amp;gt;صفحه جدید&amp;lt;/a&amp;gt;&lt;br /&gt;
    &amp;lt;a href=&amp;quot;#&amp;quot; onclick=&amp;quot;showAllPages(); return false;&amp;quot;&amp;gt;همه صفحات&amp;lt;/a&amp;gt;&lt;br /&gt;
    &amp;lt;a href=&amp;quot;#&amp;quot; onclick=&amp;quot;exportData(); return false;&amp;quot;&amp;gt;خروجی JSON&amp;lt;/a&amp;gt;&lt;br /&gt;
    &amp;lt;a href=&amp;quot;#&amp;quot; onclick=&amp;quot;importData(); return false;&amp;quot;&amp;gt;ورودی JSON&amp;lt;/a&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;!-- Header --&amp;gt;&lt;br /&gt;
  &amp;lt;header class=&amp;quot;wiki-header&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;wiki-logo&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;div class=&amp;quot;wiki-logo-icon&amp;quot;&amp;gt;W&amp;lt;/div&amp;gt;&lt;br /&gt;
      &amp;lt;h1&amp;gt;&amp;lt;span&amp;gt;ویکی&amp;lt;/span&amp;gt; شخصی من&amp;lt;/h1&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;header-search&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;input type=&amp;quot;text&amp;quot; id=&amp;quot;globalSearch&amp;quot; placeholder=&amp;quot;جستجو...&amp;quot; oninput=&amp;quot;searchPages()&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;button onclick=&amp;quot;searchPages()&amp;quot;&amp;gt;جستجو&amp;lt;/button&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;/header&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;!-- Body --&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;wiki-body&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Sidebar --&amp;gt;&lt;br /&gt;
    &amp;lt;nav class=&amp;quot;wiki-sidebar&amp;quot; id=&amp;quot;sidebar&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;div class=&amp;quot;sidebar-section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h4&amp;gt;ابزارها&amp;lt;/h4&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;sidebar-search&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;input type=&amp;quot;text&amp;quot; id=&amp;quot;sidebarSearch&amp;quot; placeholder=&amp;quot;جستجو در صفحات...&amp;quot; oninput=&amp;quot;searchPages()&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;button onclick=&amp;quot;searchPages()&amp;quot;&amp;gt;برو&amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
      &amp;lt;div class=&amp;quot;sidebar-section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h4&amp;gt;ناوبری&amp;lt;/h4&amp;gt;&lt;br /&gt;
        &amp;lt;ul id=&amp;quot;navPages&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;li&amp;gt;&amp;lt;a href=&amp;quot;#&amp;quot; class=&amp;quot;active-page&amp;quot; onclick=&amp;quot;showMainPage(); return false;&amp;quot;&amp;gt;صفحه اصلی&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
      &amp;lt;div class=&amp;quot;sidebar-section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h4&amp;gt;صفحات ویژه&amp;lt;/h4&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
          &amp;lt;li&amp;gt;&amp;lt;a href=&amp;quot;#&amp;quot; onclick=&amp;quot;showAllPages(); return false;&amp;quot;&amp;gt;همه صفحات&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
          &amp;lt;li&amp;gt;&amp;lt;a href=&amp;quot;#&amp;quot; onclick=&amp;quot;openCreateModal(); return false;&amp;quot;&amp;gt;ایجاد صفحه جدید&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
      &amp;lt;div class=&amp;quot;sidebar-section&amp;quot; id=&amp;quot;categorySidebar&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h4&amp;gt;رده‌ها&amp;lt;/h4&amp;gt;&lt;br /&gt;
        &amp;lt;ul id=&amp;quot;categoryList&amp;quot;&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/nav&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Content --&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;wiki-content&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;div class=&amp;quot;content-tabs&amp;quot; id=&amp;quot;contentTabs&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;button class=&amp;quot;content-tab active&amp;quot; id=&amp;quot;tab-read&amp;quot; onclick=&amp;quot;switchTab(&#039;read&#039;)&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;خواندن&amp;lt;/strong&amp;gt;&amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button class=&amp;quot;content-tab&amp;quot; id=&amp;quot;tab-edit&amp;quot; onclick=&amp;quot;switchTab(&#039;edit&#039;)&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;ویرایش&amp;lt;/strong&amp;gt;&amp;lt;/button&amp;gt;&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;!-- Read View --&amp;gt;&lt;br /&gt;
      &amp;lt;div class=&amp;quot;article-body&amp;quot; id=&amp;quot;readView&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;!-- Edit View (hidden) --&amp;gt;&lt;br /&gt;
      &amp;lt;div class=&amp;quot;article-body&amp;quot; id=&amp;quot;editView&amp;quot; style=&amp;quot;display:none;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;!-- Footer --&amp;gt;&lt;br /&gt;
      &amp;lt;div class=&amp;quot;page-footer&amp;quot;&amp;gt;&lt;br /&gt;
        صفحه آخرین بار در &amp;lt;span id=&amp;quot;footerDate&amp;quot;&amp;gt;&amp;lt;/span&amp;gt; ویرایش شده است.&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;!-- Bottom nav --&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;footer-nav&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;a href=&amp;quot;#&amp;quot; onclick=&amp;quot;showMainPage(); return false;&amp;quot;&amp;gt;صفحه اصلی&amp;lt;/a&amp;gt;&lt;br /&gt;
    &amp;lt;span&amp;gt;•&amp;lt;/span&amp;gt;&lt;br /&gt;
    &amp;lt;a href=&amp;quot;#&amp;quot; onclick=&amp;quot;showAllPages(); return false;&amp;quot;&amp;gt;فهرست صفحات&amp;lt;/a&amp;gt;&lt;br /&gt;
    &amp;lt;span&amp;gt;•&amp;lt;/span&amp;gt;&lt;br /&gt;
    &amp;lt;a href=&amp;quot;#&amp;quot; onclick=&amp;quot;openCreateModal(); return false;&amp;quot;&amp;gt;صفحه جدید&amp;lt;/a&amp;gt;&lt;br /&gt;
    &amp;lt;span&amp;gt;•&amp;lt;/span&amp;gt;&lt;br /&gt;
    &amp;lt;span&amp;gt;ذخیره شده در مرورگر شما ❤️&amp;lt;/span&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;!-- Create/Edit Modal --&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;modal-overlay&amp;quot; id=&amp;quot;editorModal&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;modal&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;div class=&amp;quot;modal-header&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h3 id=&amp;quot;modalTitle&amp;quot;&amp;gt;ایجاد صفحه جدید&amp;lt;/h3&amp;gt;&lt;br /&gt;
        &amp;lt;button class=&amp;quot;btn-cancel&amp;quot; onclick=&amp;quot;closeModal(&#039;editorModal&#039;)&amp;quot; style=&amp;quot;border:none;background:none;font-size:1.2rem;cursor:pointer;&amp;quot;&amp;gt;✕&amp;lt;/button&amp;gt;&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
      &amp;lt;div class=&amp;quot;modal-body&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;form-group&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;label&amp;gt;نام صفحه (عنوان)&amp;lt;/label&amp;gt;&lt;br /&gt;
          &amp;lt;input type=&amp;quot;text&amp;quot; id=&amp;quot;pageTitle&amp;quot; placeholder=&amp;quot;مثال: React Hooks&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;form-group&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;label&amp;gt;رده (دسته‌بندی)&amp;lt;/label&amp;gt;&lt;br /&gt;
          &amp;lt;input type=&amp;quot;text&amp;quot; id=&amp;quot;pageCategory&amp;quot; placeholder=&amp;quot;مثال: برنامه‌نویسی، طراحی، یادداشت&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;form-group&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;label&amp;gt;محتوای ویکی (Wiki markup ساده)&amp;lt;/label&amp;gt;&lt;br /&gt;
          &amp;lt;textarea id=&amp;quot;pageContent&amp;quot; placeholder=&amp;quot;== عنوان بخش ==&amp;amp;#10;&amp;amp;#10;متن مقاله اینجا...&amp;amp;#10;&amp;amp;#10;=== زیرعنوان ===&amp;amp;#10;&amp;amp;#10;* مورد اول&amp;amp;#10;* مورد دوم&amp;amp;#10;&amp;amp;#10;{{یادآوری|متن مهم}}&amp;amp;#10;&amp;amp;#10;[[پیوند به صفحه دیگر]]&amp;amp;#10;&amp;amp;#10;---&amp;quot;&amp;gt;&amp;lt;/textarea&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
      &amp;lt;div class=&amp;quot;modal-actions&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;button class=&amp;quot;btn-save&amp;quot; onclick=&amp;quot;savePage()&amp;quot;&amp;gt;ذخیره صفحه&amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button class=&amp;quot;btn-cancel&amp;quot; onclick=&amp;quot;closeModal(&#039;editorModal&#039;)&amp;quot;&amp;gt;لغو&amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button class=&amp;quot;btn-delete&amp;quot; id=&amp;quot;modalDeleteBtn&amp;quot; style=&amp;quot;display:none;&amp;quot; onclick=&amp;quot;deleteCurrentPage()&amp;quot;&amp;gt;حذف صفحه&amp;lt;/button&amp;gt;&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;!-- Hidden file input for import --&amp;gt;&lt;br /&gt;
  &amp;lt;input type=&amp;quot;file&amp;quot; id=&amp;quot;importInput&amp;quot; accept=&amp;quot;.json&amp;quot; style=&amp;quot;display:none;&amp;quot; onchange=&amp;quot;handleImport(event)&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;script&amp;gt;&lt;br /&gt;
    // ===== Data Layer =====&lt;br /&gt;
    let pages = JSON.parse(localStorage.getItem(&#039;mediawiki_pages&#039;) || &#039;[]&#039;);&lt;br /&gt;
    let currentPageId = null;&lt;br /&gt;
    let editingPageId = null;&lt;br /&gt;
&lt;br /&gt;
    function save() {&lt;br /&gt;
      localStorage.setItem(&#039;mediawiki_pages&#039;, JSON.stringify(pages));&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function genId() {&lt;br /&gt;
      return Date.now().toString(36) + Math.random().toString(36).slice(2, 7);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function getPageBySlug(slug) {&lt;br /&gt;
      return pages.find(p =&amp;gt; p.slug === slug);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function slugify(text) {&lt;br /&gt;
      return text.trim().replace(/\s+/g, &#039;-&#039;).replace(/[^\w\-\u0600-\u06FF]/g, &#039;&#039;).toLowerCase();&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // ===== Wiki Markup Parser =====&lt;br /&gt;
    function parseWikiMarkup(text) {&lt;br /&gt;
      let html = text;&lt;br /&gt;
&lt;br /&gt;
      // Escape HTML first&lt;br /&gt;
      html = html.replace(/&amp;amp;/g, &#039;&amp;amp;amp;&#039;).replace(/&amp;lt;/g, &#039;&amp;amp;lt;&#039;).replace(/&amp;gt;/g, &#039;&amp;amp;gt;&#039;);&lt;br /&gt;
&lt;br /&gt;
      // Headings: == Title == → &amp;lt;h2&amp;gt;, === Title === → &amp;lt;h3&amp;gt;, etc.&lt;br /&gt;
      html = html.replace(/^======\s*(.+?)\s*======/gm, &#039;&amp;lt;h5&amp;gt;$1&amp;lt;/h5&amp;gt;&#039;);&lt;br /&gt;
      html = html.replace(/^=====\s*(.+?)\s*=====/gm, &#039;&amp;lt;h4&amp;gt;$1&amp;lt;/h4&amp;gt;&#039;);&lt;br /&gt;
      html = html.replace(/^====\s*(.+?)\s*====/gm, &#039;&amp;lt;h4&amp;gt;$1&amp;lt;/h4&amp;gt;&#039;);&lt;br /&gt;
      html = html.replace(/^===\s*(.+?)\s*===/gm, &#039;&amp;lt;h3&amp;gt;$1&amp;lt;/h3&amp;gt;&#039;);&lt;br /&gt;
      html = html.replace(/^==\s*(.+?)\s*==/gm, &#039;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;wiki-heading&amp;quot;&amp;gt;&amp;lt;h2&amp;gt;$1&amp;lt;/h2&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;wiki-para&amp;quot;&amp;gt;&#039;);&lt;br /&gt;
&lt;br /&gt;
      // Bold &amp;amp; Italic&lt;br /&gt;
      html = html.replace(/&#039;{5}(.+?)&#039;{5}/g, &#039;&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;$1&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt;&#039;);&lt;br /&gt;
      html = html.replace(/&#039;{3}(.+?)&#039;{3}/g, &#039;&amp;lt;b&amp;gt;$1&amp;lt;/b&amp;gt;&#039;);&lt;br /&gt;
      html = html.replace(/&#039;{2}(.+?)&#039;{2}/g, &#039;&amp;lt;i&amp;gt;$1&amp;lt;/i&amp;gt;&#039;);&lt;br /&gt;
&lt;br /&gt;
      // Internal links: [[Page Name]] or [[Page Name|display text]]&lt;br /&gt;
      html = html.replace(/\[\[([^\]|]+)\|([^\]]+)\]\]/g, &#039;&amp;lt;a href=&amp;quot;#&amp;quot; onclick=&amp;quot;navigateToPage(\&#039;$1\&#039;); return false;&amp;quot; class=&amp;quot;wiki-link&amp;quot;&amp;gt;$2&amp;lt;/a&amp;gt;&#039;);&lt;br /&gt;
      html = html.replace(/\[\[([^\]]+)\]\]/g, &#039;&amp;lt;a href=&amp;quot;#&amp;quot; onclick=&amp;quot;navigateToPage(\&#039;$1\&#039;); return false;&amp;quot; class=&amp;quot;wiki-link&amp;quot;&amp;gt;$1&amp;lt;/a&amp;gt;&#039;);&lt;br /&gt;
&lt;br /&gt;
      // External links: [http://... text]&lt;br /&gt;
      html = html.replace(/\[(https?:\/\/[^\s]+)\s+([^\]]+)\]/g, &#039;&amp;lt;a href=&amp;quot;$1&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;$2&amp;lt;/a&amp;gt;&#039;);&lt;br /&gt;
      // Bare external: [http://...]&lt;br /&gt;
      html = html.replace(/\[(https?:\/\/[^\s]+)\]/g, &#039;&amp;lt;a href=&amp;quot;$1&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;$1&amp;lt;/a&amp;gt;&#039;);&lt;br /&gt;
&lt;br /&gt;
      // Templates: {{یادآوری|text}} or {{tip|text}}&lt;br /&gt;
      html = html.replace(/\{\{یادآوری\|(.+?)\}\}/g, &#039;&amp;lt;div class=&amp;quot;ambox&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ambox-icon&amp;quot;&amp;gt;💡&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;$1&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&#039;);&lt;br /&gt;
      html = html.replace(/\{\{tip\|(.+?)\}\}/g, &#039;&amp;lt;div class=&amp;quot;ambox&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ambox-icon&amp;quot;&amp;gt;✅&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;$1&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&#039;);&lt;br /&gt;
      html = html.replace(/\{\{هشدار\|(.+?)\}\}/g, &#039;&amp;lt;div class=&amp;quot;ambox&amp;quot; style=&amp;quot;border-color:var(--danger);&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ambox-icon&amp;quot;&amp;gt;⚠️&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;$1&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&#039;);&lt;br /&gt;
      html = html.replace(/\{\{note\|(.+?)\}\}/g, &#039;&amp;lt;div class=&amp;quot;ambox&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ambox-icon&amp;quot;&amp;gt;📝&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;$1&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&#039;);&lt;br /&gt;
&lt;br /&gt;
      // Code blocks: &amp;lt;code&amp;gt;...&amp;lt;/code&amp;gt; or indented lines&lt;br /&gt;
      html = html.replace(/&amp;lt;code&amp;gt;([\s\S]*?)&amp;lt;\/code&amp;gt;/g, &#039;&amp;lt;pre&amp;gt;&amp;lt;code&amp;gt;$1&amp;lt;/code&amp;gt;&amp;lt;/pre&amp;gt;&#039;);&lt;br /&gt;
&lt;br /&gt;
      // Blockquote: lines starting with :&lt;br /&gt;
      html = html.replace(/^:\s*(.+)$/gm, &#039;&amp;lt;blockquote&amp;gt;$1&amp;lt;/blockquote&amp;gt;&#039;);&lt;br /&gt;
&lt;br /&gt;
      // Horizontal rule: ----&lt;br /&gt;
      html = html.replace(/^----+$/gm, &#039;&amp;lt;hr style=&amp;quot;border:none;border-top:1px solid var(--border-light);margin:1rem 0;&amp;quot;&amp;gt;&#039;);&lt;br /&gt;
&lt;br /&gt;
      // Unordered lists&lt;br /&gt;
      html = html.replace(/^\* (.+)$/gm, &#039;&amp;lt;li style=&amp;quot;list-style:disc;margin-right:1.5rem;&amp;quot;&amp;gt;$1&amp;lt;/li&amp;gt;&#039;);&lt;br /&gt;
&lt;br /&gt;
      // Ordered lists&lt;br /&gt;
      html = html.replace(/^# (.+)$/gm, &#039;&amp;lt;li style=&amp;quot;list-style:decimal;margin-right:1.5rem;&amp;quot;&amp;gt;$1&amp;lt;/li&amp;gt;&#039;);&lt;br /&gt;
&lt;br /&gt;
      // Wrap consecutive &amp;lt;li&amp;gt; in &amp;lt;ul&amp;gt;&lt;br /&gt;
      html = html.replace(/(&amp;lt;li[^&amp;gt;]*&amp;gt;.*?&amp;lt;\/li&amp;gt;\n?)+/g, (match) =&amp;gt; {&lt;br /&gt;
        if (match.includes(&#039;list-style:decimal&#039;)) return &#039;&amp;lt;ol style=&amp;quot;margin:0.5rem 0;&amp;quot;&amp;gt;&#039; + match + &#039;&amp;lt;/ol&amp;gt;&#039;;&lt;br /&gt;
        return &#039;&amp;lt;ul style=&amp;quot;margin:0.5rem 0;&amp;quot;&amp;gt;&#039; + match + &#039;&amp;lt;/ul&amp;gt;&#039;;&lt;br /&gt;
      });&lt;br /&gt;
&lt;br /&gt;
      // Line breaks: double newline = paragraph&lt;br /&gt;
      html = html.replace(/\n\n+/g, &#039;&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;&#039;);&lt;br /&gt;
      html = html.replace(/\n/g, &#039;&amp;lt;br&amp;gt;&#039;);&lt;br /&gt;
&lt;br /&gt;
      // Wrap in paragraphs&lt;br /&gt;
      html = &#039;&amp;lt;div class=&amp;quot;wiki-para&amp;quot;&amp;gt;&amp;lt;p&amp;gt;&#039; + html + &#039;&amp;lt;/p&amp;gt;&amp;lt;/div&amp;gt;&#039;;&lt;br /&gt;
&lt;br /&gt;
      // Remove empty paragraphs&lt;br /&gt;
      html = html.replace(/&amp;lt;p&amp;gt;&amp;lt;\/p&amp;gt;/g, &#039;&#039;);&lt;br /&gt;
      html = html.replace(/&amp;lt;p&amp;gt;\s*&amp;lt;\/p&amp;gt;/g, &#039;&#039;);&lt;br /&gt;
&lt;br /&gt;
      return html;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // ===== Rendering =====&lt;br /&gt;
    function showMainPage() {&lt;br /&gt;
      currentPageId = null;&lt;br /&gt;
      updateSidebarActive(&#039;صفحه اصلی&#039;);&lt;br /&gt;
&lt;br /&gt;
      const defaultContent = pages.length === 0&lt;br /&gt;
        ? getWelcomeContent()&lt;br /&gt;
        : getRecentChangesContent();&lt;br /&gt;
&lt;br /&gt;
      document.getElementById(&#039;readView&#039;).innerHTML = defaultContent;&lt;br /&gt;
      document.getElementById(&#039;tab-read&#039;).click();&lt;br /&gt;
      document.getElementById(&#039;footerDate&#039;).textContent = formatDate(new Date().toISOString());&lt;br /&gt;
      window.scrollTo(0, 0);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function getWelcomeContent() {&lt;br /&gt;
      return `&lt;br /&gt;
        &amp;lt;h1 class=&amp;quot;article-title&amp;quot;&amp;gt;صفحه اصلی&amp;lt;/h1&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;ambox&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;span class=&amp;quot;ambox-icon&amp;quot;&amp;gt;📖&amp;lt;/span&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;به ویکی شخصی خود خوش آمدید! اینجا می‌توانید هر چیزی که یاد می‌گیرید را ذخیره کنید.&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;h2 style=&amp;quot;font-weight:400;font-size:1.4rem;margin:1.5rem 0 0.5rem;border-bottom:1px solid var(--border-light);padding-bottom:0.2rem;&amp;quot;&amp;gt;نحوه استفاده&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;برای شروع کار با این ویکی، از امکانات زیر استفاده کنید:&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;ul style=&amp;quot;margin:0.5rem 0 1rem 2rem;&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;li&amp;gt;&amp;lt;b&amp;gt;ایجاد صفحه جدید:&amp;lt;/b&amp;gt; از لینک «صفحه جدید» در بالای صفحه استفاده کنید.&amp;lt;/li&amp;gt;&lt;br /&gt;
          &amp;lt;li&amp;gt;&amp;lt;b&amp;gt;ویرایش صفحه:&amp;lt;/b&amp;gt; روی تب «ویرایش» کلیک کنید.&amp;lt;/li&amp;gt;&lt;br /&gt;
          &amp;lt;li&amp;gt;&amp;lt;b&amp;gt;پیوند بین صفحات:&amp;lt;/b&amp;gt; از &amp;lt;code&amp;gt;[[نام صفحه]]&amp;lt;/code&amp;gt; استفاده کنید.&amp;lt;/li&amp;gt;&lt;br /&gt;
          &amp;lt;li&amp;gt;&amp;lt;b&amp;gt;قالب‌بندی:&amp;lt;/b&amp;gt; از &amp;lt;code&amp;gt;== عنوان ==&amp;lt;/code&amp;gt; برای تیتر و &amp;lt;code&amp;gt;&#039;&#039;&#039;متن&#039;&#039;&#039;&amp;lt;/code&amp;gt; برای بولد استفاده کنید.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
        &amp;lt;h2 style=&amp;quot;font-weight:400;font-size:1.4rem;margin:1.5rem 0 0.5rem;border-bottom:1px solid var(--border-light);padding-bottom:0.2rem;&amp;quot;&amp;gt;شروع کنید&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;اکنون &amp;lt;a href=&amp;quot;#&amp;quot; onclick=&amp;quot;openCreateModal(); return false;&amp;quot;&amp;gt;&amp;lt;b&amp;gt;اولین صفحه خود را بسازید&amp;lt;/b&amp;gt;&amp;lt;/a&amp;gt; و شروع به یادداشت کنید!&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;h2 style=&amp;quot;font-weight:400;font-size:1.4rem;margin:1.5rem 0 0.5rem;border-bottom:1px solid var(--border-light);padding-bottom:0.2rem;&amp;quot;&amp;gt;راهنمای Wiki markup&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;table class=&amp;quot;infobox&amp;quot; style=&amp;quot;width:100%;float:none;&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;tr&amp;gt;&amp;lt;td class=&amp;quot;infobox-header&amp;quot; colspan=&amp;quot;2&amp;quot;&amp;gt;نمونه‌های قالب‌بندی&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
          &amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;عنوان بخش&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;&amp;lt;code&amp;gt;== عنوان ==&amp;lt;/code&amp;gt; یا &amp;lt;code&amp;gt;=== زیرعنوان ===&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
          &amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;متن بولد&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;&amp;lt;code&amp;gt;&#039;&#039;&#039;متن بولد&#039;&#039;&#039;&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
          &amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;متن ایتالیک&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;&amp;lt;code&amp;gt;&#039;&#039;متن ایتالیک&#039;&#039;&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
          &amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;لیست&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;&amp;lt;code&amp;gt;* مورد اول&amp;lt;/code&amp;gt; (ترتیبی: &amp;lt;code&amp;gt;# مورد اول&amp;lt;/code&amp;gt;)&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
          &amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;پیوند داخلی&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;&amp;lt;code&amp;gt;[[نام صفحه]]&amp;lt;/code&amp;gt; یا &amp;lt;code&amp;gt;[[نام|متن نمایشی]]&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
          &amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;پیوند خارجی&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;&amp;lt;code&amp;gt;[https://example.com متن لینک]&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
          &amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;یادآوری&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;&amp;lt;code&amp;gt;{{یادآوری|متن مهم}}&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
          &amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;کد&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;code&amp;amp;gt;کد&amp;amp;lt;/code&amp;amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
          &amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;خط جداکننده&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;&amp;lt;code&amp;gt;----&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;`;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function getRecentChangesContent() {&lt;br /&gt;
      const sorted = [...pages].sort((a, b) =&amp;gt; new Date(b.updatedAt) - new Date(a.updatedAt));&lt;br /&gt;
      const recent = sorted.slice(0, 10);&lt;br /&gt;
&lt;br /&gt;
      let html = `&lt;br /&gt;
        &amp;lt;h1 class=&amp;quot;article-title&amp;quot;&amp;gt;صفحه اصلی&amp;lt;/h1&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;ambox&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;span class=&amp;quot;ambox-icon&amp;quot;&amp;gt;🏠&amp;lt;/span&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;به ویکی شخصی خود خوش آمدید. &amp;lt;a href=&amp;quot;#&amp;quot; onclick=&amp;quot;openCreateModal(); return false;&amp;quot;&amp;gt;صفحه جدید ایجاد کنید&amp;lt;/a&amp;gt;.&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;h2 style=&amp;quot;font-weight:400;font-size:1.4rem;margin:1.5rem 0 0.5rem;border-bottom:1px solid var(--border-light);padding-bottom:0.2rem;&amp;quot;&amp;gt;تغییرات اخیر&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;آخرین صفحات ویرایش شده:&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;table style=&amp;quot;width:100%;border-collapse:collapse;margin:0.5rem 0;&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;tr style=&amp;quot;background:var(--tab-bg);&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;th style=&amp;quot;padding:0.4rem 0.6rem;border:1px solid var(--border-light);text-align:right;&amp;quot;&amp;gt;صفحه&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th style=&amp;quot;padding:0.4rem 0.6rem;border:1px solid var(--border-light);text-align:right;&amp;quot;&amp;gt;رده&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th style=&amp;quot;padding:0.4rem 0.6rem;border:1px solid var(--border-light);text-align:right;&amp;quot;&amp;gt;آخرین ویرایش&amp;lt;/th&amp;gt;&lt;br /&gt;
          &amp;lt;/tr&amp;gt;`;&lt;br /&gt;
&lt;br /&gt;
      recent.forEach(p =&amp;gt; {&lt;br /&gt;
        const cats = p.categories.length &amp;gt; 0 ? p.categories.join(&#039;, &#039;) : &#039;—&#039;;&lt;br /&gt;
        html += `&lt;br /&gt;
          &amp;lt;tr style=&amp;quot;cursor:pointer;&amp;quot; onclick=&amp;quot;navigateToPage(&#039;${p.title}&#039;)&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding:0.4rem 0.6rem;border:1px solid var(--border-light);&amp;quot;&amp;gt;&amp;lt;a href=&amp;quot;#&amp;quot; onclick=&amp;quot;event.preventDefault();navigateToPage(&#039;${p.title}&#039;)&amp;quot;&amp;gt;${escapeHtml(p.title)}&amp;lt;/a&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding:0.4rem 0.6rem;border:1px solid var(--border-light);color:var(--text-muted);&amp;quot;&amp;gt;${escapeHtml(cats)}&amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding:0.4rem 0.6rem;border:1px solid var(--border-light);color:var(--text-light);&amp;quot;&amp;gt;${formatDate(p.updatedAt)}&amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;/tr&amp;gt;`;&lt;br /&gt;
      });&lt;br /&gt;
&lt;br /&gt;
      html += `&amp;lt;/table&amp;gt;`;&lt;br /&gt;
&lt;br /&gt;
      // Stats&lt;br /&gt;
      html += `&lt;br /&gt;
        &amp;lt;h2 style=&amp;quot;font-weight:400;font-size:1.4rem;margin:1.5rem 0 0.5rem;border-bottom:1px solid var(--border-light);padding-bottom:0.2rem;&amp;quot;&amp;gt;آمار ویکی&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul style=&amp;quot;margin:0.5rem 0 1rem 2rem;&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;li&amp;gt;تعداد کل صفحات: &amp;lt;b&amp;gt;${pages.length}&amp;lt;/b&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
          &amp;lt;li&amp;gt;تعداد رده‌ها: &amp;lt;b&amp;gt;${new Set(pages.flatMap(p =&amp;gt; p.categories)).size}&amp;lt;/b&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
          &amp;lt;li&amp;gt;بزرگ‌ترین صفحه: &amp;lt;b&amp;gt;${pages.length &amp;gt; 0 ? pages.reduce((a, b) =&amp;gt; a.content.length &amp;gt; b.content.length ? a : b).title : &#039;—&#039;}&amp;lt;/b&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;`;&lt;br /&gt;
&lt;br /&gt;
      return html;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function showAllPages() {&lt;br /&gt;
      currentPageId = null;&lt;br /&gt;
      updateSidebarActive(&#039;همه صفحات&#039;);&lt;br /&gt;
&lt;br /&gt;
      const sorted = [...pages].sort((a, b) =&amp;gt; a.title.localeCompare(b.title, &#039;fa&#039;));&lt;br /&gt;
&lt;br /&gt;
      let html = `&amp;lt;h1 class=&amp;quot;article-title&amp;quot;&amp;gt;همه صفحات&amp;lt;/h1&amp;gt;`;&lt;br /&gt;
&lt;br /&gt;
      if (sorted.length === 0) {&lt;br /&gt;
        html += `&lt;br /&gt;
          &amp;lt;div class=&amp;quot;ambox&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;span class=&amp;quot;ambox-icon&amp;quot;&amp;gt;📭&amp;lt;/span&amp;gt;&lt;br /&gt;
            &amp;lt;span&amp;gt;هنوز هیچ صفحه‌ای وجود ندارد. &amp;lt;a href=&amp;quot;#&amp;quot; onclick=&amp;quot;openCreateModal(); return false;&amp;quot;&amp;gt;اولین صفحه را بسازید&amp;lt;/a&amp;gt;.&amp;lt;/span&amp;gt;&lt;br /&gt;
          &amp;lt;/div&amp;gt;`;&lt;br /&gt;
      } else {&lt;br /&gt;
        html += `&amp;lt;p&amp;gt;تعداد کل صفحات: &amp;lt;b&amp;gt;${sorted.length}&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;`;&lt;br /&gt;
        html += `&amp;lt;ul class=&amp;quot;special-list&amp;quot;&amp;gt;`;&lt;br /&gt;
        sorted.forEach(p =&amp;gt; {&lt;br /&gt;
          const catText = p.categories.length &amp;gt; 0 ? ` — ${p.categories.join(&#039;, &#039;)}` : &#039;&#039;;&lt;br /&gt;
          html += `&amp;lt;li&amp;gt;&amp;lt;a href=&amp;quot;#&amp;quot; onclick=&amp;quot;navigateToPage(&#039;${escapeHtml(p.title)}&#039;); return false;&amp;quot;&amp;gt;${escapeHtml(p.title)}&amp;lt;/a&amp;gt; &amp;lt;span class=&amp;quot;desc&amp;quot;&amp;gt;${catText} (${formatDate(p.updatedAt)})&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;`;&lt;br /&gt;
        });&lt;br /&gt;
        html += `&amp;lt;/ul&amp;gt;`;&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
      document.getElementById(&#039;readView&#039;).innerHTML = html;&lt;br /&gt;
      document.getElementById(&#039;tab-read&#039;).click();&lt;br /&gt;
      document.getElementById(&#039;footerDate&#039;).textContent = formatDate(new Date().toISOString());&lt;br /&gt;
      window.scrollTo(0, 0);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function navigateToPage(title) {&lt;br /&gt;
      const page = pages.find(p =&amp;gt; p.title === title || p.slug === slugify(title));&lt;br /&gt;
      if (page) {&lt;br /&gt;
        showPage(page.id);&lt;br /&gt;
      } else {&lt;br /&gt;
        // Page doesn&#039;t exist — offer to create&lt;br /&gt;
        if (confirm(`صفحه «${title}}» وجود ندارد. آیا می‌خواهید آن را بسازید؟`)) {&lt;br /&gt;
          editingPageId = null;&lt;br /&gt;
          document.getElementById(&#039;modalTitle&#039;).textContent = `ایجاد صفحه: ${title}`;&lt;br /&gt;
          document.getElementById(&#039;pageTitle&#039;).value = title;&lt;br /&gt;
          document.getElementById(&#039;pageCategory&#039;).value = &#039;&#039;;&lt;br /&gt;
          document.getElementById(&#039;pageContent&#039;).value = &#039;&#039;;&lt;br /&gt;
          document.getElementById(&#039;modalDeleteBtn&#039;).style.display = &#039;none&#039;;&lt;br /&gt;
          document.getElementById(&#039;editorModal&#039;).classList.add(&#039;show&#039;);&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function showPage(id) {&lt;br /&gt;
      const page = pages.find(p =&amp;gt; p.id === id);&lt;br /&gt;
      if (!page) return showMainPage();&lt;br /&gt;
&lt;br /&gt;
      currentPageId = id;&lt;br /&gt;
      updateSidebarActive(page.title);&lt;br /&gt;
&lt;br /&gt;
      const parsedContent = parseWikiMarkup(page.content);&lt;br /&gt;
&lt;br /&gt;
      // Build TOC from headings&lt;br /&gt;
      const headingMatches = page.content.match(/^==+\s*(.+?)\s*==+$/gm) || [];&lt;br /&gt;
      let tocHtml = &#039;&#039;;&lt;br /&gt;
      if (headingMatches.length &amp;gt;= 2) {&lt;br /&gt;
        tocHtml = `&amp;lt;div class=&amp;quot;toc&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;toc-title&amp;quot;&amp;gt;فهرست مطالب &amp;lt;span class=&amp;quot;toc-toggle&amp;quot; onclick=&amp;quot;this.parentElement.querySelector(&#039;ol&#039;).classList.toggle(&#039;hidden&#039;);&amp;quot;&amp;gt;[隐蔽]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;ol&amp;gt;`;&lt;br /&gt;
        headingMatches.forEach((h, i) =&amp;gt; {&lt;br /&gt;
          const depth = (h.match(/^=+/) || [&#039;==&#039;])[0].length - 2;&lt;br /&gt;
          const text = h.replace(/^=+\s*/, &#039;&#039;).replace(/\s*=+$/, &#039;&#039;);&lt;br /&gt;
          const indent = depth &amp;gt; 0 ? `style=&amp;quot;margin-right:${depth * 1.5}rem;&amp;quot;` : &#039;&#039;;&lt;br /&gt;
          tocHtml += `&amp;lt;li ${indent}&amp;gt;&amp;lt;a href=&amp;quot;#section-${i}&amp;quot;&amp;gt;${text}&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;`;&lt;br /&gt;
        });&lt;br /&gt;
        tocHtml += `&amp;lt;/ol&amp;gt;&amp;lt;/div&amp;gt;`;&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
      // Build categories&lt;br /&gt;
      let catHtml = &#039;&#039;;&lt;br /&gt;
      if (page.categories.length &amp;gt; 0) {&lt;br /&gt;
        catHtml = `&amp;lt;div class=&amp;quot;catlinks&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;رده‌ها:&amp;lt;/strong&amp;gt; ${page.categories.map(c =&amp;gt; `&amp;lt;a href=&amp;quot;#&amp;quot; onclick=&amp;quot;filterByCategory(&#039;${escapeHtml(c)}&#039;); return false;&amp;quot;&amp;gt;${escapeHtml(c)}&amp;lt;/a&amp;gt;`).join(&#039; &#039;)}&amp;lt;/div&amp;gt;`;&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
      // Infobox&lt;br /&gt;
      const wordCount = page.content.split(/\s+/).length;&lt;br /&gt;
      const charCount = page.content.length;&lt;br /&gt;
&lt;br /&gt;
      const infobox = `&lt;br /&gt;
        &amp;lt;div class=&amp;quot;infobox&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;infobox-header&amp;quot;&amp;gt;${escapeHtml(page.title)}&amp;lt;/div&amp;gt;&lt;br /&gt;
          &amp;lt;table&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;تاریخ ایجاد&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;${formatDate(page.createdAt)}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;آخرین ویرایش&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;${formatDate(page.updatedAt)}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;تعداد کلمات&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;${wordCount.toLocaleString(&#039;fa-IR&#039;)}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;تعداد حروف&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;${charCount.toLocaleString(&#039;fa-IR&#039;)}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
            ${page.categories.length &amp;gt; 0 ? `&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;رده‌ها&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;${page.categories.join(&#039;، &#039;)}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;` : &#039;&#039;}&lt;br /&gt;
          &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;`;&lt;br /&gt;
&lt;br /&gt;
      // Assemble&lt;br /&gt;
      let fullHtml = `&amp;lt;h1 class=&amp;quot;article-title&amp;quot;&amp;gt;${escapeHtml(page.title)}&amp;lt;/h1&amp;gt;`;&lt;br /&gt;
      fullHtml += infobox;&lt;br /&gt;
      fullHtml += tocHtml;&lt;br /&gt;
      fullHtml += parsedContent;&lt;br /&gt;
      fullHtml += `&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;`;&lt;br /&gt;
      fullHtml += catHtml;&lt;br /&gt;
&lt;br /&gt;
      // See also — links to other pages&lt;br /&gt;
      const otherPages = pages.filter(p =&amp;gt; p.id !== page.id).slice(0, 5);&lt;br /&gt;
      if (otherPages.length &amp;gt; 0) {&lt;br /&gt;
        fullHtml += `&amp;lt;h2 style=&amp;quot;font-weight:400;font-size:1.3rem;margin:1.5rem 0 0.5rem;border-bottom:1px solid var(--border-light);padding-bottom:0.2rem;&amp;quot;&amp;gt;همچنین ببینید&amp;lt;/h2&amp;gt;`;&lt;br /&gt;
        fullHtml += `&amp;lt;ul style=&amp;quot;margin:0.5rem 0;&amp;quot;&amp;gt;`;&lt;br /&gt;
        otherPages.forEach(p =&amp;gt; {&lt;br /&gt;
          fullHtml += `&amp;lt;li&amp;gt;&amp;lt;a href=&amp;quot;#&amp;quot; onclick=&amp;quot;navigateToPage(&#039;${escapeHtml(p.title)}&#039;); return false;&amp;quot;&amp;gt;${escapeHtml(p.title)}&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;`;&lt;br /&gt;
        });&lt;br /&gt;
        fullHtml += `&amp;lt;/ul&amp;gt;`;&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
      document.getElementById(&#039;readView&#039;).innerHTML = fullHtml;&lt;br /&gt;
      document.getElementById(&#039;tab-read&#039;).click();&lt;br /&gt;
      document.getElementById(&#039;footerDate&#039;).textContent = formatDate(page.updatedAt);&lt;br /&gt;
      window.scrollTo(0, 0);&lt;br /&gt;
&lt;br /&gt;
      updateSidebar();&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function renderEditView(id) {&lt;br /&gt;
      const page = id ? pages.find(p =&amp;gt; p.id === id) : null;&lt;br /&gt;
&lt;br /&gt;
      let html = `&amp;lt;h1 class=&amp;quot;article-title&amp;quot; style=&amp;quot;margin-bottom:1rem;&amp;quot;&amp;gt;${page ? &#039;ویرایش: &#039; + escapeHtml(page.title) : &#039;ایجاد صفحه جدید&#039;}&amp;lt;/h1&amp;gt;`;&lt;br /&gt;
&lt;br /&gt;
      html += `&lt;br /&gt;
        &amp;lt;div style=&amp;quot;background:var(--toc-bg);border:1px solid var(--border-light);padding:0.8rem;margin-bottom:1rem;font-size:0.88rem;&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;b&amp;gt;راهنمای سریع Wiki markup:&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
          &amp;lt;code&amp;gt;== عنوان ==&amp;lt;/code&amp;gt; · &amp;lt;code&amp;gt;&#039;&#039;&#039;بولد&#039;&#039;&#039;&amp;lt;/code&amp;gt; · &amp;lt;code&amp;gt;&#039;&#039;ایتالیک&#039;&#039;&amp;lt;/code&amp;gt; · &amp;lt;code&amp;gt;[[پیوند]]&amp;lt;/code&amp;gt; · &amp;lt;code&amp;gt;{{یادآوری|متن}}&amp;lt;/code&amp;gt; · &amp;lt;code&amp;gt;* لیست&amp;lt;/code&amp;gt; · &amp;lt;code&amp;gt;&amp;amp;lt;code&amp;amp;gt;kod&amp;amp;lt;/code&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;form-group&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;label&amp;gt;عنوان صفحه&amp;lt;/label&amp;gt;&lt;br /&gt;
          &amp;lt;input type=&amp;quot;text&amp;quot; id=&amp;quot;editTitle&amp;quot; value=&amp;quot;${page ? escapeHtml(page.title) : &#039;&#039;}&amp;quot; placeholder=&amp;quot;عنوان صفحه&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;form-group&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;label&amp;gt;رده‌ها (با کاما جدا کنید)&amp;lt;/label&amp;gt;&lt;br /&gt;
          &amp;lt;input type=&amp;quot;text&amp;quot; id=&amp;quot;editCategories&amp;quot; value=&amp;quot;${page ? page.categories.join(&#039;, &#039;) : &#039;&#039;}&amp;quot; placeholder=&amp;quot;برنامه‌نویسی, یادداشت&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;form-group&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;label&amp;gt;محتوا&amp;lt;/label&amp;gt;&lt;br /&gt;
          &amp;lt;textarea id=&amp;quot;editContent&amp;quot; placeholder=&amp;quot;محتوای صفحه را اینجا بنویسید...&amp;quot;&amp;gt;${page ? page.content : &#039;&#039;}&amp;lt;/textarea&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div style=&amp;quot;display:flex;gap:0.5rem;&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;button class=&amp;quot;btn-save&amp;quot; onclick=&amp;quot;saveFromEditor(${id ? `&#039;${id}&#039;` : &#039;null&#039;})&amp;quot;&amp;gt;ذخیره صفحه&amp;lt;/button&amp;gt;&lt;br /&gt;
          &amp;lt;button class=&amp;quot;btn-cancel&amp;quot; onclick=&amp;quot;cancelEdit()&amp;quot;&amp;gt;لغو&amp;lt;/button&amp;gt;&lt;br /&gt;
          ${page ? `&amp;lt;button class=&amp;quot;btn-delete&amp;quot; onclick=&amp;quot;deletePage(&#039;${id}&#039;)&amp;quot;&amp;gt;حذف صفحه&amp;lt;/button&amp;gt;` : &#039;&#039;}&lt;br /&gt;
        &amp;lt;/div&amp;gt;`;&lt;br /&gt;
&lt;br /&gt;
      document.getElementById(&#039;editView&#039;).innerHTML = html;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function switchTab(tab) {&lt;br /&gt;
      if (tab === &#039;read&#039;) {&lt;br /&gt;
        document.getElementById(&#039;tab-read&#039;).classList.add(&#039;active&#039;);&lt;br /&gt;
        document.getElementById(&#039;tab-edit&#039;).classList.remove(&#039;active&#039;);&lt;br /&gt;
        document.getElementById(&#039;readView&#039;).style.display = &#039;&#039;;&lt;br /&gt;
        document.getElementById(&#039;editView&#039;).style.display = &#039;none&#039;;&lt;br /&gt;
      } else {&lt;br /&gt;
        document.getElementById(&#039;tab-edit&#039;).classList.add(&#039;active&#039;);&lt;br /&gt;
        document.getElementById(&#039;tab-read&#039;).classList.remove(&#039;active&#039;);&lt;br /&gt;
        document.getElementById(&#039;readView&#039;).style.display = &#039;none&#039;;&lt;br /&gt;
        document.getElementById(&#039;editView&#039;).style.display = &#039;&#039;;&lt;br /&gt;
        renderEditView(currentPageId);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function cancelEdit() {&lt;br /&gt;
      if (currentPageId) {&lt;br /&gt;
        switchTab(&#039;read&#039;);&lt;br /&gt;
      } else {&lt;br /&gt;
        showMainPage();&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function saveFromEditor(id) {&lt;br /&gt;
      const title = document.getElementById(&#039;editTitle&#039;).value.trim();&lt;br /&gt;
      const cats = document.getElementById(&#039;editCategories&#039;).value.split(&#039;,&#039;).map(c =&amp;gt; c.trim()).filter(Boolean);&lt;br /&gt;
      const content = document.getElementById(&#039;editContent&#039;).value;&lt;br /&gt;
&lt;br /&gt;
      if (!title) { document.getElementById(&#039;editTitle&#039;).focus(); return; }&lt;br /&gt;
      if (!content) { document.getElementById(&#039;editContent&#039;).focus(); return; }&lt;br /&gt;
&lt;br /&gt;
      if (id) {&lt;br /&gt;
        const page = pages.find(p =&amp;gt; p.id === id);&lt;br /&gt;
        if (page) {&lt;br /&gt;
          page.title = title;&lt;br /&gt;
          page.slug = slugify(title);&lt;br /&gt;
          page.categories = cats;&lt;br /&gt;
          page.content = content;&lt;br /&gt;
          page.updatedAt = new Date().toISOString();&lt;br /&gt;
        }&lt;br /&gt;
      } else {&lt;br /&gt;
        const newPage = {&lt;br /&gt;
          id: genId(),&lt;br /&gt;
          title,&lt;br /&gt;
          slug: slugify(title),&lt;br /&gt;
          categories: cats,&lt;br /&gt;
          content,&lt;br /&gt;
          createdAt: new Date().toISOString(),&lt;br /&gt;
          updatedAt: new Date().toISOString(),&lt;br /&gt;
        };&lt;br /&gt;
        pages.push(newPage);&lt;br /&gt;
        currentPageId = newPage.id;&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
      save();&lt;br /&gt;
      showPage(currentPageId);&lt;br /&gt;
      updateSidebar();&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // ===== Modal helpers =====&lt;br /&gt;
    function openCreateModal() {&lt;br /&gt;
      editingPageId = null;&lt;br /&gt;
      document.getElementById(&#039;modalTitle&#039;).textContent = &#039;ایجاد صفحه جدید&#039;;&lt;br /&gt;
      document.getElementById(&#039;pageTitle&#039;).value = &#039;&#039;;&lt;br /&gt;
      document.getElementById(&#039;pageCategory&#039;).value = &#039;&#039;;&lt;br /&gt;
      document.getElementById(&#039;pageContent&#039;).value = &#039;&#039;;&lt;br /&gt;
      document.getElementById(&#039;modalDeleteBtn&#039;).style.display = &#039;none&#039;;&lt;br /&gt;
      document.getElementById(&#039;editorModal&#039;).classList.add(&#039;show&#039;);&lt;br /&gt;
      document.getElementById(&#039;pageTitle&#039;).focus();&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function savePage() {&lt;br /&gt;
      const title = document.getElementById(&#039;pageTitle&#039;).value.trim();&lt;br /&gt;
      const cats = document.getElementById(&#039;pageCategory&#039;).value.split(&#039;,&#039;).map(c =&amp;gt; c.trim()).filter(Boolean);&lt;br /&gt;
      const content = document.getElementById(&#039;pageContent&#039;).value;&lt;br /&gt;
&lt;br /&gt;
      if (!title) { document.getElementById(&#039;pageTitle&#039;).focus(); return; }&lt;br /&gt;
      if (!content) { document.getElementById(&#039;pageContent&#039;).focus(); return; }&lt;br /&gt;
&lt;br /&gt;
      const newPage = {&lt;br /&gt;
        id: genId(),&lt;br /&gt;
        title,&lt;br /&gt;
        slug: slugify(title),&lt;br /&gt;
        categories: cats,&lt;br /&gt;
        content,&lt;br /&gt;
        createdAt: new Date().toISOString(),&lt;br /&gt;
        updatedAt: new Date().toISOString(),&lt;br /&gt;
      };&lt;br /&gt;
&lt;br /&gt;
      pages.push(newPage);&lt;br /&gt;
      save();&lt;br /&gt;
      closeModal(&#039;editorModal&#039;);&lt;br /&gt;
      currentPageId = newPage.id;&lt;br /&gt;
      showPage(newPage.id);&lt;br /&gt;
      updateSidebar();&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function deletePage(id) {&lt;br /&gt;
      if (!confirm(&#039;آیا مطمئن هستید که می‌خواهید این صفحه را حذف کنید؟&#039;)) return;&lt;br /&gt;
      pages = pages.filter(p =&amp;gt; p.id !== id);&lt;br /&gt;
      save();&lt;br /&gt;
      currentPageId = null;&lt;br /&gt;
      showMainPage();&lt;br /&gt;
      updateSidebar();&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function deleteCurrentPage() {&lt;br /&gt;
      if (currentPageId) deletePage(currentPageId);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function closeModal(id) {&lt;br /&gt;
      document.getElementById(id).classList.remove(&#039;show&#039;);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // ===== Sidebar =====&lt;br /&gt;
    function updateSidebar() {&lt;br /&gt;
      const navPages = document.getElementById(&#039;navPages&#039;);&lt;br /&gt;
      const sorted = [...pages].sort((a, b) =&amp;gt; b.updatedAt.localeCompare(a.updatedAt));&lt;br /&gt;
      const recent = sorted.slice(0, 8);&lt;br /&gt;
&lt;br /&gt;
      let html = `&amp;lt;li&amp;gt;&amp;lt;a href=&amp;quot;#&amp;quot; class=&amp;quot;${!currentPageId ? &#039;active-page&#039; : &#039;&#039;}&amp;quot; onclick=&amp;quot;showMainPage(); return false;&amp;quot;&amp;gt;صفحه اصلی&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;`;&lt;br /&gt;
      recent.forEach(p =&amp;gt; {&lt;br /&gt;
        html += `&amp;lt;li&amp;gt;&amp;lt;a href=&amp;quot;#&amp;quot; class=&amp;quot;${currentPageId === p.id ? &#039;active-page&#039; : &#039;&#039;}&amp;quot; onclick=&amp;quot;navigateToPage(&#039;${escapeHtml(p.title)}&#039;); return false;&amp;quot;&amp;gt;${escapeHtml(p.title)}&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;`;&lt;br /&gt;
      });&lt;br /&gt;
      navPages.innerHTML = html;&lt;br /&gt;
&lt;br /&gt;
      // Categories&lt;br /&gt;
      const allCats = [...new Set(pages.flatMap(p =&amp;gt; p.categories))].sort();&lt;br /&gt;
      const catList = document.getElementById(&#039;categoryList&#039;);&lt;br /&gt;
      catList.innerHTML = allCats.map(c =&amp;gt;&lt;br /&gt;
        `&amp;lt;li&amp;gt;&amp;lt;a href=&amp;quot;#&amp;quot; onclick=&amp;quot;filterByCategory(&#039;${escapeHtml(c)}&#039;); return false;&amp;quot;&amp;gt;${escapeHtml(c)}&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;`&lt;br /&gt;
      ).join(&#039;&#039;);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function updateSidebarActive(title) {&lt;br /&gt;
      document.querySelectorAll(&#039;.sidebar-section li a&#039;).forEach(a =&amp;gt; {&lt;br /&gt;
        a.classList.remove(&#039;active-page&#039;);&lt;br /&gt;
        if (a.textContent.trim() === title) a.classList.add(&#039;active-page&#039;);&lt;br /&gt;
      });&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function filterByCategory(cat) {&lt;br /&gt;
      const matching = pages.filter(p =&amp;gt; p.categories.includes(cat));&lt;br /&gt;
      let html = `&amp;lt;h1 class=&amp;quot;article-title&amp;quot;&amp;gt;رده: ${escapeHtml(cat)}&amp;lt;/h1&amp;gt;`;&lt;br /&gt;
      html += `&amp;lt;p&amp;gt;تعداد صفحات در این رده: &amp;lt;b&amp;gt;${matching.length}&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;`;&lt;br /&gt;
&lt;br /&gt;
      if (matching.length &amp;gt; 0) {&lt;br /&gt;
        html += `&amp;lt;ul class=&amp;quot;special-list&amp;quot;&amp;gt;`;&lt;br /&gt;
        matching.forEach(p =&amp;gt; {&lt;br /&gt;
          html += `&amp;lt;li&amp;gt;&amp;lt;a href=&amp;quot;#&amp;quot; onclick=&amp;quot;navigateToPage(&#039;${escapeHtml(p.title)}&#039;); return false;&amp;quot;&amp;gt;${escapeHtml(p.title)}&amp;lt;/a&amp;gt; &amp;lt;span class=&amp;quot;desc&amp;quot;&amp;gt;(${formatDate(p.updatedAt)})&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;`;&lt;br /&gt;
        });&lt;br /&gt;
        html += `&amp;lt;/ul&amp;gt;`;&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
      document.getElementById(&#039;readView&#039;).innerHTML = html;&lt;br /&gt;
      document.getElementById(&#039;tab-read&#039;).click();&lt;br /&gt;
      window.scrollTo(0, 0);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // ===== Search =====&lt;br /&gt;
    function searchPages() {&lt;br /&gt;
      const query = document.getElementById(&#039;globalSearch&#039;).value.trim().toLowerCase() ||&lt;br /&gt;
                    document.getElementById(&#039;sidebarSearch&#039;).value.trim().toLowerCase();&lt;br /&gt;
&lt;br /&gt;
      if (!query) {&lt;br /&gt;
        if (currentPageId) return showPage(currentPageId);&lt;br /&gt;
        return showMainPage();&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
      const results = pages.filter(p =&amp;gt;&lt;br /&gt;
        p.title.toLowerCase().includes(query) ||&lt;br /&gt;
        p.content.toLowerCase().includes(query) ||&lt;br /&gt;
        p.categories.some(c =&amp;gt; c.toLowerCase().includes(query))&lt;br /&gt;
      );&lt;br /&gt;
&lt;br /&gt;
      let html = `&amp;lt;h1 class=&amp;quot;article-title&amp;quot;&amp;gt;نتایج جستجو: «${escapeHtml(query)}»&amp;lt;/h1&amp;gt;`;&lt;br /&gt;
      html += `&amp;lt;p&amp;gt;${results.length} نتیجه یافت شد.&amp;lt;/p&amp;gt;`;&lt;br /&gt;
&lt;br /&gt;
      if (results.length &amp;gt; 0) {&lt;br /&gt;
        html += `&amp;lt;ul class=&amp;quot;special-list&amp;quot;&amp;gt;`;&lt;br /&gt;
        results.forEach(p =&amp;gt; {&lt;br /&gt;
          // Show context snippet&lt;br /&gt;
          const idx = p.content.toLowerCase().indexOf(query);&lt;br /&gt;
          let snippet = &#039;&#039;;&lt;br /&gt;
          if (idx !== -1) {&lt;br /&gt;
            const start = Math.max(0, idx - 40);&lt;br /&gt;
            const end = Math.min(p.content.length, idx + query.length + 60);&lt;br /&gt;
            snippet = (start &amp;gt; 0 ? &#039;...&#039; : &#039;&#039;) + p.content.substring(start, end) + (end &amp;lt; p.content.length ? &#039;...&#039; : &#039;&#039;);&lt;br /&gt;
          }&lt;br /&gt;
          html += `&amp;lt;li&amp;gt;&amp;lt;a href=&amp;quot;#&amp;quot; onclick=&amp;quot;navigateToPage(&#039;${escapeHtml(p.title)}&#039;); return false;&amp;quot;&amp;gt;${escapeHtml(p.title)}&amp;lt;/a&amp;gt;`;&lt;br /&gt;
          if (snippet) html += `&amp;lt;br&amp;gt;&amp;lt;span class=&amp;quot;desc&amp;quot;&amp;gt;${escapeHtml(snippet)}&amp;lt;/span&amp;gt;`;&lt;br /&gt;
          html += `&amp;lt;/li&amp;gt;`;&lt;br /&gt;
        });&lt;br /&gt;
        html += `&amp;lt;/ul&amp;gt;`;&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
      document.getElementById(&#039;readView&#039;).innerHTML = html;&lt;br /&gt;
      document.getElementById(&#039;tab-read&#039;).click();&lt;br /&gt;
      window.scrollTo(0, 0);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // ===== Import/Export =====&lt;br /&gt;
    function exportData() {&lt;br /&gt;
      const data = JSON.stringify(pages, null, 2);&lt;br /&gt;
      const blob = new Blob([data], { type: &#039;application/json&#039; });&lt;br /&gt;
      const url = URL.createObjectURL(blob);&lt;br /&gt;
      const a = document.createElement(&#039;a&#039;);&lt;br /&gt;
      a.href = url;&lt;br /&gt;
      a.download = `wiki-backup-${new Date().toISOString().slice(0, 10)}.json`;&lt;br /&gt;
      a.click();&lt;br /&gt;
      URL.revokeObjectURL(url);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function importData() {&lt;br /&gt;
      document.getElementById(&#039;importInput&#039;).click();&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function handleImport(event) {&lt;br /&gt;
      const file = event.target.files[0];&lt;br /&gt;
      if (!file) return;&lt;br /&gt;
      const reader = new FileReader();&lt;br /&gt;
      reader.onload = (e) =&amp;gt; {&lt;br /&gt;
        try {&lt;br /&gt;
          const data = JSON.parse(e.target.result);&lt;br /&gt;
          if (!Array.isArray(data)) throw new Error(&#039;Invalid format&#039;);&lt;br /&gt;
          if (confirm(`آیا می‌خواهید ${data.length} صفحه را وارد کنید؟ (صفحات فعلی حفظ می‌شوند)`)) {&lt;br /&gt;
            data.forEach(p =&amp;gt; {&lt;br /&gt;
              if (p.title &amp;amp;&amp;amp; p.content) {&lt;br /&gt;
                pages.push({&lt;br /&gt;
                  id: p.id || genId(),&lt;br /&gt;
                  title: p.title,&lt;br /&gt;
                  slug: p.slug || slugify(p.title),&lt;br /&gt;
                  categories: p.categories || [],&lt;br /&gt;
                  content: p.content,&lt;br /&gt;
                  createdAt: p.createdAt || new Date().toISOString(),&lt;br /&gt;
                  updatedAt: p.updatedAt || new Date().toISOString(),&lt;br /&gt;
                });&lt;br /&gt;
              }&lt;br /&gt;
            });&lt;br /&gt;
            save();&lt;br /&gt;
            showMainPage();&lt;br /&gt;
            updateSidebar();&lt;br /&gt;
            alert(`${data.length} صفحه با موفقیت وارد شد.`);&lt;br /&gt;
          }&lt;br /&gt;
        } catch (err) {&lt;br /&gt;
          alert(&#039;خطا در خواندن فایل. لطفاً فایل JSON معتبر وارد کنید.&#039;);&lt;br /&gt;
        }&lt;br /&gt;
      };&lt;br /&gt;
      reader.readAsText(file);&lt;br /&gt;
      event.target.value = &#039;&#039;;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // ===== Helpers =====&lt;br /&gt;
    function formatDate(iso) {&lt;br /&gt;
      if (!iso) return &#039;—&#039;;&lt;br /&gt;
      return new Date(iso).toLocaleDateString(&#039;fa-IR&#039;, { year: &#039;numeric&#039;, month: &#039;short&#039;, day: &#039;numeric&#039;, hour: &#039;2-digit&#039;, minute: &#039;2-digit&#039; });&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function escapeHtml(text) {&lt;br /&gt;
      const d = document.createElement(&#039;div&#039;);&lt;br /&gt;
      d.textContent = text;&lt;br /&gt;
      return d.innerHTML;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // ===== Keyboard Shortcuts =====&lt;br /&gt;
    document.addEventListener(&#039;keydown&#039;, (e) =&amp;gt; {&lt;br /&gt;
      if (e.key === &#039;Escape&#039;) {&lt;br /&gt;
        document.querySelectorAll(&#039;.modal-overlay.show&#039;).forEach(m =&amp;gt; m.classList.remove(&#039;show&#039;));&lt;br /&gt;
      }&lt;br /&gt;
      if (e.key === &#039;n&#039; &amp;amp;&amp;amp; (e.ctrlKey || e.metaKey)) {&lt;br /&gt;
        e.preventDefault();&lt;br /&gt;
        openCreateModal();&lt;br /&gt;
      }&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    // Close modal on overlay click&lt;br /&gt;
    document.querySelectorAll(&#039;.modal-overlay&#039;).forEach(o =&amp;gt; {&lt;br /&gt;
      o.addEventListener(&#039;click&#039;, (e) =&amp;gt; { if (e.target === o) o.classList.remove(&#039;show&#039;); });&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    // ===== Init =====&lt;br /&gt;
    updateSidebar();&lt;br /&gt;
    showMainPage();&lt;br /&gt;
  &amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.shakibaabutalebi.ir/index.php?title=%D8%B5%D9%81%D8%AD%D9%87%D9%94_%D8%A7%D8%B5%D9%84%DB%8C&amp;diff=3</id>
		<title>صفحهٔ اصلی</title>
		<link rel="alternate" type="text/html" href="https://wiki.shakibaabutalebi.ir/index.php?title=%D8%B5%D9%81%D8%AD%D9%87%D9%94_%D8%A7%D8%B5%D9%84%DB%8C&amp;diff=3"/>
		<updated>2026-09-05T09:01:05Z</updated>

		<summary type="html">&lt;p&gt;Admin: صفحه را خالی کرد&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.shakibaabutalebi.ir/index.php?title=%D8%B5%D9%81%D8%AD%D9%87%D9%94_%D8%A7%D8%B5%D9%84%DB%8C&amp;diff=2</id>
		<title>صفحهٔ اصلی</title>
		<link rel="alternate" type="text/html" href="https://wiki.shakibaabutalebi.ir/index.php?title=%D8%B5%D9%81%D8%AD%D9%87%D9%94_%D8%A7%D8%B5%D9%84%DB%8C&amp;diff=2"/>
		<updated>2026-09-05T08:54:41Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* آغاز به کار */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;مدیاویکی با موفقیت نصب شد.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
برای اطلاعات بیشتر در مورد به‌کارگیری نرم‌افزار ویکی به [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents فهرست راهنمای کاربر] مراجعه کنید.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html lang=&amp;quot;fa&amp;quot; dir=&amp;quot;rtl&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
  &amp;lt;meta charset=&amp;quot;UTF-8&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;meta name=&amp;quot;viewport&amp;quot; content=&amp;quot;width=device-width, initial-scale=1.0&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;title&amp;gt;ویکی شخصی من&amp;lt;/title&amp;gt;&lt;br /&gt;
  &amp;lt;style&amp;gt;&lt;br /&gt;
    @import url(&#039;https://fonts.googleapis.com/css2?family=Vazirmatn:wght@300;400;500;600;700&amp;amp;display=swap&#039;);&lt;br /&gt;
&lt;br /&gt;
    * { margin: 0; padding: 0; box-sizing: border-box; }&lt;br /&gt;
&lt;br /&gt;
    :root {&lt;br /&gt;
      --bg: #f8f9fa;&lt;br /&gt;
      --surface: #ffffff;&lt;br /&gt;
      --sidebar-bg: #f0f2f5;&lt;br /&gt;
      --border: #a2a9b1;&lt;br /&gt;
      --border-light: #c8ccd1;&lt;br /&gt;
      --text: #202122;&lt;br /&gt;
      --text-muted: #54595d;&lt;br /&gt;
      --text-light: #72777d;&lt;br /&gt;
      --accent: #3366cc;&lt;br /&gt;
      --accent-hover: #2a4b8d;&lt;br /&gt;
      --accent-visited: #795cb2;&lt;br /&gt;
      --link: #0645ad;&lt;br /&gt;
      --link-hover: #0b0080;&lt;br /&gt;
      --link-visited: #0b0080;&lt;br /&gt;
      --tab-bg: #eaecf0;&lt;br /&gt;
      --tab-active: #ffffff;&lt;br /&gt;
      --toc-bg: #f8f9fa;&lt;br /&gt;
      --toc-border: #a2a9b1;&lt;br /&gt;
      --danger: #b32424;&lt;br /&gt;
      --success: #14866d;&lt;br /&gt;
      --warning: #e07d10;&lt;br /&gt;
      --tag-green: #14866d;&lt;br /&gt;
      --tag-blue: #3366cc;&lt;br /&gt;
      --tag-orange: #b7570a;&lt;br /&gt;
      --tag-purple: #795cb2;&lt;br /&gt;
      --shadow: 0 1px 3px rgba(0,0,0,0.08);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    body {&lt;br /&gt;
      font-family: &#039;Vazirmatn&#039;, sans-serif;&lt;br /&gt;
      background: var(--bg);&lt;br /&gt;
      color: var(--text);&lt;br /&gt;
      font-size: 14px;&lt;br /&gt;
      line-height: 1.7;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    a { color: var(--link); text-decoration: none; }&lt;br /&gt;
    a:hover { text-decoration: underline; color: var(--link-hover); }&lt;br /&gt;
&lt;br /&gt;
    /* === Personal Bar (top) === */&lt;br /&gt;
    .personal-bar {&lt;br /&gt;
      background: var(--surface);&lt;br /&gt;
      border-bottom: 1px solid var(--border-light);&lt;br /&gt;
      padding: 0.25rem 1rem;&lt;br /&gt;
      font-size: 0.82rem;&lt;br /&gt;
      display: flex;&lt;br /&gt;
      justify-content: flex-start;&lt;br /&gt;
      align-items: center;&lt;br /&gt;
      gap: 1rem;&lt;br /&gt;
      color: var(--text-muted);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .personal-bar a { color: var(--link); font-size: 0.82rem; }&lt;br /&gt;
&lt;br /&gt;
    /* === Main Header === */&lt;br /&gt;
    .wiki-header {&lt;br /&gt;
      background: var(--surface);&lt;br /&gt;
      padding: 0.8rem 1.5rem;&lt;br /&gt;
      display: flex;&lt;br /&gt;
      align-items: center;&lt;br /&gt;
      justify-content: space-between;&lt;br /&gt;
      border-bottom: 3px solid var(--accent);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .wiki-logo {&lt;br /&gt;
      display: flex;&lt;br /&gt;
      align-items: center;&lt;br /&gt;
      gap: 0.75rem;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .wiki-logo-icon {&lt;br /&gt;
      width: 50px;&lt;br /&gt;
      height: 50px;&lt;br /&gt;
      background: var(--accent);&lt;br /&gt;
      border-radius: 50%;&lt;br /&gt;
      display: flex;&lt;br /&gt;
      align-items: center;&lt;br /&gt;
      justify-content: center;&lt;br /&gt;
      color: white;&lt;br /&gt;
      font-size: 1.6rem;&lt;br /&gt;
      font-weight: 700;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .wiki-logo h1 {&lt;br /&gt;
      font-size: 1.5rem;&lt;br /&gt;
      font-weight: 400;&lt;br /&gt;
      color: var(--text);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .wiki-logo h1 span {&lt;br /&gt;
      font-weight: 700;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .header-search {&lt;br /&gt;
      display: flex;&lt;br /&gt;
      align-items: center;&lt;br /&gt;
      gap: 0.4rem;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .header-search input {&lt;br /&gt;
      padding: 0.45rem 0.8rem;&lt;br /&gt;
      border: 1px solid var(--border);&lt;br /&gt;
      border-radius: 2px;&lt;br /&gt;
      font-family: inherit;&lt;br /&gt;
      font-size: 0.9rem;&lt;br /&gt;
      width: 300px;&lt;br /&gt;
      direction: rtl;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .header-search input:focus {&lt;br /&gt;
      outline: none;&lt;br /&gt;
      border-color: var(--accent);&lt;br /&gt;
      box-shadow: 0 0 0 2px rgba(51,102,204,0.15);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .header-search button {&lt;br /&gt;
      padding: 0.45rem 0.8rem;&lt;br /&gt;
      background: var(--accent);&lt;br /&gt;
      color: white;&lt;br /&gt;
      border: 1px solid var(--accent);&lt;br /&gt;
      font-family: inherit;&lt;br /&gt;
      font-size: 0.85rem;&lt;br /&gt;
      cursor: pointer;&lt;br /&gt;
      border-radius: 2px;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .header-search button:hover { background: var(--accent-hover); }&lt;br /&gt;
&lt;br /&gt;
    /* === Body Layout === */&lt;br /&gt;
    .wiki-body {&lt;br /&gt;
      display: flex;&lt;br /&gt;
      max-width: 1400px;&lt;br /&gt;
      margin: 0 auto;&lt;br /&gt;
      min-height: calc(100vh - 120px);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* === Sidebar === */&lt;br /&gt;
    .wiki-sidebar {&lt;br /&gt;
      width: 220px;&lt;br /&gt;
      min-width: 220px;&lt;br /&gt;
      background: var(--surface);&lt;br /&gt;
      border-left: 1px solid var(--border-light);&lt;br /&gt;
      padding: 1rem 0;&lt;br /&gt;
      font-size: 0.88rem;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .sidebar-section {&lt;br /&gt;
      margin-bottom: 0.5rem;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .sidebar-section h4 {&lt;br /&gt;
      padding: 0.4rem 1rem;&lt;br /&gt;
      font-size: 0.78rem;&lt;br /&gt;
      font-weight: 700;&lt;br /&gt;
      color: var(--text-muted);&lt;br /&gt;
      text-transform: uppercase;&lt;br /&gt;
      letter-spacing: 0.05em;&lt;br /&gt;
      background: var(--tab-bg);&lt;br /&gt;
      border-top: 1px solid var(--border-light);&lt;br /&gt;
      border-bottom: 1px solid var(--border-light);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .sidebar-section ul {&lt;br /&gt;
      list-style: none;&lt;br /&gt;
      padding: 0.3rem 0;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .sidebar-section li a {&lt;br /&gt;
      display: block;&lt;br /&gt;
      padding: 0.3rem 1rem;&lt;br /&gt;
      color: var(--accent);&lt;br /&gt;
      transition: background 0.15s;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .sidebar-section li a:hover {&lt;br /&gt;
      background: var(--tab-bg);&lt;br /&gt;
      text-decoration: none;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .sidebar-section li a.active-page {&lt;br /&gt;
      background: var(--accent);&lt;br /&gt;
      color: white;&lt;br /&gt;
      font-weight: 500;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .sidebar-search {&lt;br /&gt;
      padding: 0.5rem 1rem;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .sidebar-search input {&lt;br /&gt;
      width: 100%;&lt;br /&gt;
      padding: 0.35rem 0.6rem;&lt;br /&gt;
      border: 1px solid var(--border);&lt;br /&gt;
      font-family: inherit;&lt;br /&gt;
      font-size: 0.85rem;&lt;br /&gt;
      direction: rtl;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .sidebar-search input:focus {&lt;br /&gt;
      outline: none;&lt;br /&gt;
      border-color: var(--accent);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .sidebar-search button {&lt;br /&gt;
      width: 100%;&lt;br /&gt;
      margin-top: 0.3rem;&lt;br /&gt;
      padding: 0.3rem;&lt;br /&gt;
      background: var(--tab-bg);&lt;br /&gt;
      border: 1px solid var(--border);&lt;br /&gt;
      font-family: inherit;&lt;br /&gt;
      font-size: 0.82rem;&lt;br /&gt;
      cursor: pointer;&lt;br /&gt;
      color: var(--text-muted);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .sidebar-search button:hover { background: var(--border-light); }&lt;br /&gt;
&lt;br /&gt;
    /* === Content Area === */&lt;br /&gt;
    .wiki-content {&lt;br /&gt;
      flex: 1;&lt;br /&gt;
      min-width: 0;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* Tabs */&lt;br /&gt;
    .content-tabs {&lt;br /&gt;
      display: flex;&lt;br /&gt;
      background: var(--tab-bg);&lt;br /&gt;
      border-bottom: 1px solid var(--border-light);&lt;br /&gt;
      padding: 0 1rem;&lt;br /&gt;
      gap: 0;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .content-tab {&lt;br /&gt;
      padding: 0.5rem 1rem;&lt;br /&gt;
      font-size: 0.88rem;&lt;br /&gt;
      color: var(--text-muted);&lt;br /&gt;
      cursor: pointer;&lt;br /&gt;
      border: 1px solid transparent;&lt;br /&gt;
      border-bottom: none;&lt;br /&gt;
      background: none;&lt;br /&gt;
      font-family: inherit;&lt;br /&gt;
      border-radius: 2px 2px 0 0;&lt;br /&gt;
      position: relative;&lt;br /&gt;
      top: 1px;&lt;br /&gt;
      transition: background 0.15s;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .content-tab:hover {&lt;br /&gt;
      background: var(--surface);&lt;br /&gt;
      color: var(--text);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .content-tab.active {&lt;br /&gt;
      background: var(--surface);&lt;br /&gt;
      color: var(--text);&lt;br /&gt;
      border-color: var(--border-light);&lt;br /&gt;
      border-bottom-color: var(--surface);&lt;br /&gt;
      font-weight: 500;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* Article Content */&lt;br /&gt;
    .article-body {&lt;br /&gt;
      background: var(--surface);&lt;br /&gt;
      border: 1px solid var(--border-light);&lt;br /&gt;
      border-top: none;&lt;br /&gt;
      padding: 1.5rem 2rem;&lt;br /&gt;
      min-height: 400px;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .article-body h1.article-title {&lt;br /&gt;
      font-size: 1.8rem;&lt;br /&gt;
      font-weight: 400;&lt;br /&gt;
      border-bottom: 1px solid var(--border-light);&lt;br /&gt;
      padding-bottom: 0.3rem;&lt;br /&gt;
      margin-bottom: 1rem;&lt;br /&gt;
      line-height: 1.4;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .article-intro {&lt;br /&gt;
      margin-bottom: 1.5rem;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* Table of Contents */&lt;br /&gt;
    .toc {&lt;br /&gt;
      background: var(--toc-bg);&lt;br /&gt;
      border: 1px solid var(--toc-border);&lt;br /&gt;
      padding: 0.8rem 1rem;&lt;br /&gt;
      display: inline-block;&lt;br /&gt;
      margin: 0 0 1.5rem;&lt;br /&gt;
      min-width: 200px;&lt;br /&gt;
      font-size: 0.9rem;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .toc-title {&lt;br /&gt;
      font-weight: 700;&lt;br /&gt;
      text-align: center;&lt;br /&gt;
      margin-bottom: 0.3rem;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .toc-toggle {&lt;br /&gt;
      font-size: 0.82rem;&lt;br /&gt;
      color: var(--link);&lt;br /&gt;
      cursor: pointer;&lt;br /&gt;
      margin-right: 0.3rem;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .toc ol {&lt;br /&gt;
      margin: 0;&lt;br /&gt;
      padding-right: 1.2rem;&lt;br /&gt;
      list-style-type: decimal;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .toc ol ol {&lt;br /&gt;
      list-style-type: decimal;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .toc li {&lt;br /&gt;
      margin: 0.2rem 0;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .toc li a {&lt;br /&gt;
      color: var(--link);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* Section Headings */&lt;br /&gt;
    .wiki-heading {&lt;br /&gt;
      display: flex;&lt;br /&gt;
      align-items: baseline;&lt;br /&gt;
      border-bottom: 1px solid var(--border-light);&lt;br /&gt;
      margin: 1.5rem 0 0.8rem;&lt;br /&gt;
      padding-bottom: 0.2rem;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .wiki-heading h2 {&lt;br /&gt;
      font-size: 1.4rem;&lt;br /&gt;
      font-weight: 400;&lt;br /&gt;
      flex: 1;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .wiki-heading .edit-section {&lt;br /&gt;
      font-size: 0.82rem;&lt;br /&gt;
      color: var(--text-light);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .wiki-heading h3 {&lt;br /&gt;
      font-size: 1.15rem;&lt;br /&gt;
      font-weight: 700;&lt;br /&gt;
      flex: 1;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .wiki-heading h3::after {&lt;br /&gt;
      content: &#039;&#039;;&lt;br /&gt;
      display: none;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .article-body p {&lt;br /&gt;
      margin-bottom: 0.8rem;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .article-body ul, .article-body ol {&lt;br /&gt;
      margin: 0.5rem 0 0.8rem 2rem;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .article-body li {&lt;br /&gt;
      margin-bottom: 0.3rem;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* Category Box */&lt;br /&gt;
    .catlinks {&lt;br /&gt;
      background: var(--toc-bg);&lt;br /&gt;
      border: 1px solid var(--border-light);&lt;br /&gt;
      padding: 0.5rem 1rem;&lt;br /&gt;
      margin-top: 2rem;&lt;br /&gt;
      font-size: 0.85rem;&lt;br /&gt;
      display: flex;&lt;br /&gt;
      gap: 0.5rem;&lt;br /&gt;
      flex-wrap: wrap;&lt;br /&gt;
      align-items: center;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .catlinks strong { margin-left: 0.3rem; }&lt;br /&gt;
&lt;br /&gt;
    .catlinks a {&lt;br /&gt;
      background: var(--tab-bg);&lt;br /&gt;
      padding: 0.15rem 0.5rem;&lt;br /&gt;
      border-radius: 2px;&lt;br /&gt;
      font-size: 0.82rem;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* Page Footer */&lt;br /&gt;
    .page-footer {&lt;br /&gt;
      background: var(--surface);&lt;br /&gt;
      border-top: 1px solid var(--border-light);&lt;br /&gt;
      padding: 1rem 2rem;&lt;br /&gt;
      font-size: 0.82rem;&lt;br /&gt;
      color: var(--text-light);&lt;br /&gt;
      text-align: center;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* === Wiki Text Formatting === */&lt;br /&gt;
    .wiki-bold { font-weight: 700; }&lt;br /&gt;
    .wiki-italic { font-style: italic; }&lt;br /&gt;
&lt;br /&gt;
    code {&lt;br /&gt;
      background: var(--toc-bg);&lt;br /&gt;
      padding: 0.1rem 0.35rem;&lt;br /&gt;
      border: 1px solid var(--border-light);&lt;br /&gt;
      font-size: 0.92em;&lt;br /&gt;
      border-radius: 2px;&lt;br /&gt;
      font-family: monospace;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    pre {&lt;br /&gt;
      background: var(--toc-bg);&lt;br /&gt;
      border: 1px solid var(--border-light);&lt;br /&gt;
      padding: 0.8rem 1rem;&lt;br /&gt;
      overflow-x: auto;&lt;br /&gt;
      font-size: 0.9rem;&lt;br /&gt;
      margin: 0.8rem 0;&lt;br /&gt;
      border-radius: 2px;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    pre code {&lt;br /&gt;
      background: none;&lt;br /&gt;
      border: none;&lt;br /&gt;
      padding: 0;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    blockquote {&lt;br /&gt;
      border-right: 3px solid var(--accent);&lt;br /&gt;
      padding-right: 1rem;&lt;br /&gt;
      margin: 0.8rem 0;&lt;br /&gt;
      color: var(--text-muted);&lt;br /&gt;
      background: var(--toc-bg);&lt;br /&gt;
      padding: 0.5rem 1rem;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* Info Box */&lt;br /&gt;
    .infobox {&lt;br /&gt;
      float: left;&lt;br /&gt;
      clear: right;&lt;br /&gt;
      margin: 0 0 1rem 1.5rem;&lt;br /&gt;
      border: 1px solid var(--border-light);&lt;br /&gt;
      border-collapse: collapse;&lt;br /&gt;
      background: var(--surface);&lt;br /&gt;
      font-size: 0.88rem;&lt;br /&gt;
      width: 280px;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .infobox-header {&lt;br /&gt;
      background: var(--accent);&lt;br /&gt;
      color: white;&lt;br /&gt;
      padding: 0.5rem 0.8rem;&lt;br /&gt;
      text-align: center;&lt;br /&gt;
      font-weight: 700;&lt;br /&gt;
      font-size: 1rem;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .infobox td, .infobox th {&lt;br /&gt;
      padding: 0.3rem 0.6rem;&lt;br /&gt;
      border: 1px solid var(--border-light);&lt;br /&gt;
      vertical-align: top;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .infobox th {&lt;br /&gt;
      background: var(--toc-bg);&lt;br /&gt;
      text-align: right;&lt;br /&gt;
      font-weight: 500;&lt;br /&gt;
      width: 35%;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* Alert Boxes */&lt;br /&gt;
    .ambox {&lt;br /&gt;
      border: 1px solid var(--border-light);&lt;br /&gt;
      background: var(--toc-bg);&lt;br /&gt;
      padding: 0.6rem 1rem;&lt;br /&gt;
      margin: 0.8rem 0;&lt;br /&gt;
      font-size: 0.88rem;&lt;br /&gt;
      display: flex;&lt;br /&gt;
      align-items: center;&lt;br /&gt;
      gap: 0.6rem;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .ambox-icon { font-size: 1.3rem; }&lt;br /&gt;
&lt;br /&gt;
    /* Editor (Modal) */&lt;br /&gt;
    .modal-overlay {&lt;br /&gt;
      display: none;&lt;br /&gt;
      position: fixed;&lt;br /&gt;
      inset: 0;&lt;br /&gt;
      background: rgba(0,0,0,0.5);&lt;br /&gt;
      z-index: 200;&lt;br /&gt;
      align-items: center;&lt;br /&gt;
      justify-content: center;&lt;br /&gt;
      padding: 1rem;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .modal-overlay.show { display: flex; }&lt;br /&gt;
&lt;br /&gt;
    .modal {&lt;br /&gt;
      background: var(--surface);&lt;br /&gt;
      border: 1px solid var(--border);&lt;br /&gt;
      width: 100%;&lt;br /&gt;
      max-width: 800px;&lt;br /&gt;
      max-height: 90vh;&lt;br /&gt;
      overflow-y: auto;&lt;br /&gt;
      border-radius: 2px;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .modal-header {&lt;br /&gt;
      background: var(--tab-bg);&lt;br /&gt;
      padding: 0.6rem 1rem;&lt;br /&gt;
      border-bottom: 1px solid var(--border-light);&lt;br /&gt;
      display: flex;&lt;br /&gt;
      align-items: center;&lt;br /&gt;
      justify-content: space-between;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .modal-header h3 { font-size: 1rem; font-weight: 500; }&lt;br /&gt;
&lt;br /&gt;
    .modal-body { padding: 1.2rem; }&lt;br /&gt;
&lt;br /&gt;
    .form-group { margin-bottom: 1rem; }&lt;br /&gt;
&lt;br /&gt;
    .form-group label {&lt;br /&gt;
      display: block;&lt;br /&gt;
      font-size: 0.85rem;&lt;br /&gt;
      font-weight: 500;&lt;br /&gt;
      margin-bottom: 0.3rem;&lt;br /&gt;
      color: var(--text-muted);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .form-group input,&lt;br /&gt;
    .form-group textarea,&lt;br /&gt;
    .form-group select {&lt;br /&gt;
      width: 100%;&lt;br /&gt;
      padding: 0.5rem 0.7rem;&lt;br /&gt;
      border: 1px solid var(--border);&lt;br /&gt;
      font-family: inherit;&lt;br /&gt;
      font-size: 0.95rem;&lt;br /&gt;
      direction: rtl;&lt;br /&gt;
      border-radius: 2px;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .form-group textarea {&lt;br /&gt;
      min-height: 300px;&lt;br /&gt;
      resize: vertical;&lt;br /&gt;
      font-family: monospace;&lt;br /&gt;
      font-size: 0.9rem;&lt;br /&gt;
      line-height: 1.8;&lt;br /&gt;
      direction: ltr;&lt;br /&gt;
      text-align: left;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .form-group input:focus,&lt;br /&gt;
    .form-group textarea:focus,&lt;br /&gt;
    .form-group select:focus {&lt;br /&gt;
      outline: none;&lt;br /&gt;
      border-color: var(--accent);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .modal-actions {&lt;br /&gt;
      display: flex;&lt;br /&gt;
      gap: 0.5rem;&lt;br /&gt;
      padding: 0.6rem 1rem;&lt;br /&gt;
      background: var(--tab-bg);&lt;br /&gt;
      border-top: 1px solid var(--border-light);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .modal-actions button {&lt;br /&gt;
      padding: 0.4rem 1rem;&lt;br /&gt;
      font-family: inherit;&lt;br /&gt;
      font-size: 0.85rem;&lt;br /&gt;
      cursor: pointer;&lt;br /&gt;
      border-radius: 2px;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .btn-save {&lt;br /&gt;
      background: var(--accent);&lt;br /&gt;
      color: white;&lt;br /&gt;
      border: 1px solid var(--accent);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .btn-save:hover { background: var(--accent-hover); }&lt;br /&gt;
&lt;br /&gt;
    .btn-cancel {&lt;br /&gt;
      background: var(--tab-bg);&lt;br /&gt;
      color: var(--text);&lt;br /&gt;
      border: 1px solid var(--border);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .btn-cancel:hover { background: var(--border-light); }&lt;br /&gt;
&lt;br /&gt;
    .btn-delete {&lt;br /&gt;
      background: var(--danger);&lt;br /&gt;
      color: white;&lt;br /&gt;
      border: 1px solid var(--danger);&lt;br /&gt;
      margin-right: auto;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .btn-delete:hover { background: #9b1b1b; }&lt;br /&gt;
&lt;br /&gt;
    /* Footer nav */&lt;br /&gt;
    .footer-nav {&lt;br /&gt;
      background: var(--surface);&lt;br /&gt;
      border-top: 1px solid var(--border-light);&lt;br /&gt;
      padding: 0.5rem 1rem;&lt;br /&gt;
      display: flex;&lt;br /&gt;
      justify-content: center;&lt;br /&gt;
      gap: 1.5rem;&lt;br /&gt;
      font-size: 0.82rem;&lt;br /&gt;
      color: var(--text-light);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .footer-nav a { color: var(--link); }&lt;br /&gt;
&lt;br /&gt;
    /* Special pages list */&lt;br /&gt;
    .special-list {&lt;br /&gt;
      list-style: none;&lt;br /&gt;
      padding: 0;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .special-list li {&lt;br /&gt;
      padding: 0.4rem 0;&lt;br /&gt;
      border-bottom: 1px dotted var(--border-light);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .special-list li:last-child { border-bottom: none; }&lt;br /&gt;
&lt;br /&gt;
    .special-list a {&lt;br /&gt;
      font-weight: 500;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .special-list .desc {&lt;br /&gt;
      color: var(--text-muted);&lt;br /&gt;
      font-size: 0.88rem;&lt;br /&gt;
      margin-right: 0.5rem;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* Responsive */&lt;br /&gt;
    @media (max-width: 900px) {&lt;br /&gt;
      .wiki-sidebar { display: none; }&lt;br /&gt;
      .header-search input { width: 180px; }&lt;br /&gt;
      .article-body { padding: 1rem; }&lt;br /&gt;
      .infobox { float: none; width: 100%; margin: 0 0 1rem; }&lt;br /&gt;
    }&lt;br /&gt;
  &amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;!-- Personal Toolbar --&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;personal-bar&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;span&amp;gt;👤 کاربر مهمان&amp;lt;/span&amp;gt;&lt;br /&gt;
    &amp;lt;a href=&amp;quot;#&amp;quot; onclick=&amp;quot;openCreateModal(); return false;&amp;quot;&amp;gt;صفحه جدید&amp;lt;/a&amp;gt;&lt;br /&gt;
    &amp;lt;a href=&amp;quot;#&amp;quot; onclick=&amp;quot;showAllPages(); return false;&amp;quot;&amp;gt;همه صفحات&amp;lt;/a&amp;gt;&lt;br /&gt;
    &amp;lt;a href=&amp;quot;#&amp;quot; onclick=&amp;quot;exportData(); return false;&amp;quot;&amp;gt;خروجی JSON&amp;lt;/a&amp;gt;&lt;br /&gt;
    &amp;lt;a href=&amp;quot;#&amp;quot; onclick=&amp;quot;importData(); return false;&amp;quot;&amp;gt;ورودی JSON&amp;lt;/a&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;!-- Header --&amp;gt;&lt;br /&gt;
  &amp;lt;header class=&amp;quot;wiki-header&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;wiki-logo&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;div class=&amp;quot;wiki-logo-icon&amp;quot;&amp;gt;W&amp;lt;/div&amp;gt;&lt;br /&gt;
      &amp;lt;h1&amp;gt;&amp;lt;span&amp;gt;ویکی&amp;lt;/span&amp;gt; شخصی من&amp;lt;/h1&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;header-search&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;input type=&amp;quot;text&amp;quot; id=&amp;quot;globalSearch&amp;quot; placeholder=&amp;quot;جستجو...&amp;quot; oninput=&amp;quot;searchPages()&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;button onclick=&amp;quot;searchPages()&amp;quot;&amp;gt;جستجو&amp;lt;/button&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;/header&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;!-- Body --&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;wiki-body&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Sidebar --&amp;gt;&lt;br /&gt;
    &amp;lt;nav class=&amp;quot;wiki-sidebar&amp;quot; id=&amp;quot;sidebar&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;div class=&amp;quot;sidebar-section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h4&amp;gt;ابزارها&amp;lt;/h4&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;sidebar-search&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;input type=&amp;quot;text&amp;quot; id=&amp;quot;sidebarSearch&amp;quot; placeholder=&amp;quot;جستجو در صفحات...&amp;quot; oninput=&amp;quot;searchPages()&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;button onclick=&amp;quot;searchPages()&amp;quot;&amp;gt;برو&amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
      &amp;lt;div class=&amp;quot;sidebar-section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h4&amp;gt;ناوبری&amp;lt;/h4&amp;gt;&lt;br /&gt;
        &amp;lt;ul id=&amp;quot;navPages&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;li&amp;gt;&amp;lt;a href=&amp;quot;#&amp;quot; class=&amp;quot;active-page&amp;quot; onclick=&amp;quot;showMainPage(); return false;&amp;quot;&amp;gt;صفحه اصلی&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
      &amp;lt;div class=&amp;quot;sidebar-section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h4&amp;gt;صفحات ویژه&amp;lt;/h4&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
          &amp;lt;li&amp;gt;&amp;lt;a href=&amp;quot;#&amp;quot; onclick=&amp;quot;showAllPages(); return false;&amp;quot;&amp;gt;همه صفحات&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
          &amp;lt;li&amp;gt;&amp;lt;a href=&amp;quot;#&amp;quot; onclick=&amp;quot;openCreateModal(); return false;&amp;quot;&amp;gt;ایجاد صفحه جدید&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
      &amp;lt;div class=&amp;quot;sidebar-section&amp;quot; id=&amp;quot;categorySidebar&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h4&amp;gt;رده‌ها&amp;lt;/h4&amp;gt;&lt;br /&gt;
        &amp;lt;ul id=&amp;quot;categoryList&amp;quot;&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/nav&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Content --&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;wiki-content&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;div class=&amp;quot;content-tabs&amp;quot; id=&amp;quot;contentTabs&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;button class=&amp;quot;content-tab active&amp;quot; id=&amp;quot;tab-read&amp;quot; onclick=&amp;quot;switchTab(&#039;read&#039;)&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;خواندن&amp;lt;/strong&amp;gt;&amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button class=&amp;quot;content-tab&amp;quot; id=&amp;quot;tab-edit&amp;quot; onclick=&amp;quot;switchTab(&#039;edit&#039;)&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;ویرایش&amp;lt;/strong&amp;gt;&amp;lt;/button&amp;gt;&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;!-- Read View --&amp;gt;&lt;br /&gt;
      &amp;lt;div class=&amp;quot;article-body&amp;quot; id=&amp;quot;readView&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;!-- Edit View (hidden) --&amp;gt;&lt;br /&gt;
      &amp;lt;div class=&amp;quot;article-body&amp;quot; id=&amp;quot;editView&amp;quot; style=&amp;quot;display:none;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;!-- Footer --&amp;gt;&lt;br /&gt;
      &amp;lt;div class=&amp;quot;page-footer&amp;quot;&amp;gt;&lt;br /&gt;
        صفحه آخرین بار در &amp;lt;span id=&amp;quot;footerDate&amp;quot;&amp;gt;&amp;lt;/span&amp;gt; ویرایش شده است.&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;!-- Bottom nav --&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;footer-nav&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;a href=&amp;quot;#&amp;quot; onclick=&amp;quot;showMainPage(); return false;&amp;quot;&amp;gt;صفحه اصلی&amp;lt;/a&amp;gt;&lt;br /&gt;
    &amp;lt;span&amp;gt;•&amp;lt;/span&amp;gt;&lt;br /&gt;
    &amp;lt;a href=&amp;quot;#&amp;quot; onclick=&amp;quot;showAllPages(); return false;&amp;quot;&amp;gt;فهرست صفحات&amp;lt;/a&amp;gt;&lt;br /&gt;
    &amp;lt;span&amp;gt;•&amp;lt;/span&amp;gt;&lt;br /&gt;
    &amp;lt;a href=&amp;quot;#&amp;quot; onclick=&amp;quot;openCreateModal(); return false;&amp;quot;&amp;gt;صفحه جدید&amp;lt;/a&amp;gt;&lt;br /&gt;
    &amp;lt;span&amp;gt;•&amp;lt;/span&amp;gt;&lt;br /&gt;
    &amp;lt;span&amp;gt;ذخیره شده در مرورگر شما ❤️&amp;lt;/span&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;!-- Create/Edit Modal --&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;modal-overlay&amp;quot; id=&amp;quot;editorModal&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;modal&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;div class=&amp;quot;modal-header&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h3 id=&amp;quot;modalTitle&amp;quot;&amp;gt;ایجاد صفحه جدید&amp;lt;/h3&amp;gt;&lt;br /&gt;
        &amp;lt;button class=&amp;quot;btn-cancel&amp;quot; onclick=&amp;quot;closeModal(&#039;editorModal&#039;)&amp;quot; style=&amp;quot;border:none;background:none;font-size:1.2rem;cursor:pointer;&amp;quot;&amp;gt;✕&amp;lt;/button&amp;gt;&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
      &amp;lt;div class=&amp;quot;modal-body&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;form-group&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;label&amp;gt;نام صفحه (عنوان)&amp;lt;/label&amp;gt;&lt;br /&gt;
          &amp;lt;input type=&amp;quot;text&amp;quot; id=&amp;quot;pageTitle&amp;quot; placeholder=&amp;quot;مثال: React Hooks&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;form-group&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;label&amp;gt;رده (دسته‌بندی)&amp;lt;/label&amp;gt;&lt;br /&gt;
          &amp;lt;input type=&amp;quot;text&amp;quot; id=&amp;quot;pageCategory&amp;quot; placeholder=&amp;quot;مثال: برنامه‌نویسی، طراحی، یادداشت&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;form-group&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;label&amp;gt;محتوای ویکی (Wiki markup ساده)&amp;lt;/label&amp;gt;&lt;br /&gt;
          &amp;lt;textarea id=&amp;quot;pageContent&amp;quot; placeholder=&amp;quot;== عنوان بخش ==&amp;amp;#10;&amp;amp;#10;متن مقاله اینجا...&amp;amp;#10;&amp;amp;#10;=== زیرعنوان ===&amp;amp;#10;&amp;amp;#10;* مورد اول&amp;amp;#10;* مورد دوم&amp;amp;#10;&amp;amp;#10;{{یادآوری|متن مهم}}&amp;amp;#10;&amp;amp;#10;[[پیوند به صفحه دیگر]]&amp;amp;#10;&amp;amp;#10;---&amp;quot;&amp;gt;&amp;lt;/textarea&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
      &amp;lt;div class=&amp;quot;modal-actions&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;button class=&amp;quot;btn-save&amp;quot; onclick=&amp;quot;savePage()&amp;quot;&amp;gt;ذخیره صفحه&amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button class=&amp;quot;btn-cancel&amp;quot; onclick=&amp;quot;closeModal(&#039;editorModal&#039;)&amp;quot;&amp;gt;لغو&amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button class=&amp;quot;btn-delete&amp;quot; id=&amp;quot;modalDeleteBtn&amp;quot; style=&amp;quot;display:none;&amp;quot; onclick=&amp;quot;deleteCurrentPage()&amp;quot;&amp;gt;حذف صفحه&amp;lt;/button&amp;gt;&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;!-- Hidden file input for import --&amp;gt;&lt;br /&gt;
  &amp;lt;input type=&amp;quot;file&amp;quot; id=&amp;quot;importInput&amp;quot; accept=&amp;quot;.json&amp;quot; style=&amp;quot;display:none;&amp;quot; onchange=&amp;quot;handleImport(event)&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;script&amp;gt;&lt;br /&gt;
    // ===== Data Layer =====&lt;br /&gt;
    let pages = JSON.parse(localStorage.getItem(&#039;mediawiki_pages&#039;) || &#039;[]&#039;);&lt;br /&gt;
    let currentPageId = null;&lt;br /&gt;
    let editingPageId = null;&lt;br /&gt;
&lt;br /&gt;
    function save() {&lt;br /&gt;
      localStorage.setItem(&#039;mediawiki_pages&#039;, JSON.stringify(pages));&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function genId() {&lt;br /&gt;
      return Date.now().toString(36) + Math.random().toString(36).slice(2, 7);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function getPageBySlug(slug) {&lt;br /&gt;
      return pages.find(p =&amp;gt; p.slug === slug);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function slugify(text) {&lt;br /&gt;
      return text.trim().replace(/\s+/g, &#039;-&#039;).replace(/[^\w\-\u0600-\u06FF]/g, &#039;&#039;).toLowerCase();&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // ===== Wiki Markup Parser =====&lt;br /&gt;
    function parseWikiMarkup(text) {&lt;br /&gt;
      let html = text;&lt;br /&gt;
&lt;br /&gt;
      // Escape HTML first&lt;br /&gt;
      html = html.replace(/&amp;amp;/g, &#039;&amp;amp;amp;&#039;).replace(/&amp;lt;/g, &#039;&amp;amp;lt;&#039;).replace(/&amp;gt;/g, &#039;&amp;amp;gt;&#039;);&lt;br /&gt;
&lt;br /&gt;
      // Headings: == Title == → &amp;lt;h2&amp;gt;, === Title === → &amp;lt;h3&amp;gt;, etc.&lt;br /&gt;
      html = html.replace(/^======\s*(.+?)\s*======/gm, &#039;&amp;lt;h5&amp;gt;$1&amp;lt;/h5&amp;gt;&#039;);&lt;br /&gt;
      html = html.replace(/^=====\s*(.+?)\s*=====/gm, &#039;&amp;lt;h4&amp;gt;$1&amp;lt;/h4&amp;gt;&#039;);&lt;br /&gt;
      html = html.replace(/^====\s*(.+?)\s*====/gm, &#039;&amp;lt;h4&amp;gt;$1&amp;lt;/h4&amp;gt;&#039;);&lt;br /&gt;
      html = html.replace(/^===\s*(.+?)\s*===/gm, &#039;&amp;lt;h3&amp;gt;$1&amp;lt;/h3&amp;gt;&#039;);&lt;br /&gt;
      html = html.replace(/^==\s*(.+?)\s*==/gm, &#039;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;wiki-heading&amp;quot;&amp;gt;&amp;lt;h2&amp;gt;$1&amp;lt;/h2&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;wiki-para&amp;quot;&amp;gt;&#039;);&lt;br /&gt;
&lt;br /&gt;
      // Bold &amp;amp; Italic&lt;br /&gt;
      html = html.replace(/&#039;{5}(.+?)&#039;{5}/g, &#039;&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;$1&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt;&#039;);&lt;br /&gt;
      html = html.replace(/&#039;{3}(.+?)&#039;{3}/g, &#039;&amp;lt;b&amp;gt;$1&amp;lt;/b&amp;gt;&#039;);&lt;br /&gt;
      html = html.replace(/&#039;{2}(.+?)&#039;{2}/g, &#039;&amp;lt;i&amp;gt;$1&amp;lt;/i&amp;gt;&#039;);&lt;br /&gt;
&lt;br /&gt;
      // Internal links: [[Page Name]] or [[Page Name|display text]]&lt;br /&gt;
      html = html.replace(/\[\[([^\]|]+)\|([^\]]+)\]\]/g, &#039;&amp;lt;a href=&amp;quot;#&amp;quot; onclick=&amp;quot;navigateToPage(\&#039;$1\&#039;); return false;&amp;quot; class=&amp;quot;wiki-link&amp;quot;&amp;gt;$2&amp;lt;/a&amp;gt;&#039;);&lt;br /&gt;
      html = html.replace(/\[\[([^\]]+)\]\]/g, &#039;&amp;lt;a href=&amp;quot;#&amp;quot; onclick=&amp;quot;navigateToPage(\&#039;$1\&#039;); return false;&amp;quot; class=&amp;quot;wiki-link&amp;quot;&amp;gt;$1&amp;lt;/a&amp;gt;&#039;);&lt;br /&gt;
&lt;br /&gt;
      // External links: [http://... text]&lt;br /&gt;
      html = html.replace(/\[(https?:\/\/[^\s]+)\s+([^\]]+)\]/g, &#039;&amp;lt;a href=&amp;quot;$1&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;$2&amp;lt;/a&amp;gt;&#039;);&lt;br /&gt;
      // Bare external: [http://...]&lt;br /&gt;
      html = html.replace(/\[(https?:\/\/[^\s]+)\]/g, &#039;&amp;lt;a href=&amp;quot;$1&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;$1&amp;lt;/a&amp;gt;&#039;);&lt;br /&gt;
&lt;br /&gt;
      // Templates: {{یادآوری|text}} or {{tip|text}}&lt;br /&gt;
      html = html.replace(/\{\{یادآوری\|(.+?)\}\}/g, &#039;&amp;lt;div class=&amp;quot;ambox&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ambox-icon&amp;quot;&amp;gt;💡&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;$1&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&#039;);&lt;br /&gt;
      html = html.replace(/\{\{tip\|(.+?)\}\}/g, &#039;&amp;lt;div class=&amp;quot;ambox&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ambox-icon&amp;quot;&amp;gt;✅&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;$1&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&#039;);&lt;br /&gt;
      html = html.replace(/\{\{هشدار\|(.+?)\}\}/g, &#039;&amp;lt;div class=&amp;quot;ambox&amp;quot; style=&amp;quot;border-color:var(--danger);&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ambox-icon&amp;quot;&amp;gt;⚠️&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;$1&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&#039;);&lt;br /&gt;
      html = html.replace(/\{\{note\|(.+?)\}\}/g, &#039;&amp;lt;div class=&amp;quot;ambox&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ambox-icon&amp;quot;&amp;gt;📝&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;$1&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&#039;);&lt;br /&gt;
&lt;br /&gt;
      // Code blocks: &amp;lt;code&amp;gt;...&amp;lt;/code&amp;gt; or indented lines&lt;br /&gt;
      html = html.replace(/&amp;lt;code&amp;gt;([\s\S]*?)&amp;lt;\/code&amp;gt;/g, &#039;&amp;lt;pre&amp;gt;&amp;lt;code&amp;gt;$1&amp;lt;/code&amp;gt;&amp;lt;/pre&amp;gt;&#039;);&lt;br /&gt;
&lt;br /&gt;
      // Blockquote: lines starting with :&lt;br /&gt;
      html = html.replace(/^:\s*(.+)$/gm, &#039;&amp;lt;blockquote&amp;gt;$1&amp;lt;/blockquote&amp;gt;&#039;);&lt;br /&gt;
&lt;br /&gt;
      // Horizontal rule: ----&lt;br /&gt;
      html = html.replace(/^----+$/gm, &#039;&amp;lt;hr style=&amp;quot;border:none;border-top:1px solid var(--border-light);margin:1rem 0;&amp;quot;&amp;gt;&#039;);&lt;br /&gt;
&lt;br /&gt;
      // Unordered lists&lt;br /&gt;
      html = html.replace(/^\* (.+)$/gm, &#039;&amp;lt;li style=&amp;quot;list-style:disc;margin-right:1.5rem;&amp;quot;&amp;gt;$1&amp;lt;/li&amp;gt;&#039;);&lt;br /&gt;
&lt;br /&gt;
      // Ordered lists&lt;br /&gt;
      html = html.replace(/^# (.+)$/gm, &#039;&amp;lt;li style=&amp;quot;list-style:decimal;margin-right:1.5rem;&amp;quot;&amp;gt;$1&amp;lt;/li&amp;gt;&#039;);&lt;br /&gt;
&lt;br /&gt;
      // Wrap consecutive &amp;lt;li&amp;gt; in &amp;lt;ul&amp;gt;&lt;br /&gt;
      html = html.replace(/(&amp;lt;li[^&amp;gt;]*&amp;gt;.*?&amp;lt;\/li&amp;gt;\n?)+/g, (match) =&amp;gt; {&lt;br /&gt;
        if (match.includes(&#039;list-style:decimal&#039;)) return &#039;&amp;lt;ol style=&amp;quot;margin:0.5rem 0;&amp;quot;&amp;gt;&#039; + match + &#039;&amp;lt;/ol&amp;gt;&#039;;&lt;br /&gt;
        return &#039;&amp;lt;ul style=&amp;quot;margin:0.5rem 0;&amp;quot;&amp;gt;&#039; + match + &#039;&amp;lt;/ul&amp;gt;&#039;;&lt;br /&gt;
      });&lt;br /&gt;
&lt;br /&gt;
      // Line breaks: double newline = paragraph&lt;br /&gt;
      html = html.replace(/\n\n+/g, &#039;&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;&#039;);&lt;br /&gt;
      html = html.replace(/\n/g, &#039;&amp;lt;br&amp;gt;&#039;);&lt;br /&gt;
&lt;br /&gt;
      // Wrap in paragraphs&lt;br /&gt;
      html = &#039;&amp;lt;div class=&amp;quot;wiki-para&amp;quot;&amp;gt;&amp;lt;p&amp;gt;&#039; + html + &#039;&amp;lt;/p&amp;gt;&amp;lt;/div&amp;gt;&#039;;&lt;br /&gt;
&lt;br /&gt;
      // Remove empty paragraphs&lt;br /&gt;
      html = html.replace(/&amp;lt;p&amp;gt;&amp;lt;\/p&amp;gt;/g, &#039;&#039;);&lt;br /&gt;
      html = html.replace(/&amp;lt;p&amp;gt;\s*&amp;lt;\/p&amp;gt;/g, &#039;&#039;);&lt;br /&gt;
&lt;br /&gt;
      return html;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // ===== Rendering =====&lt;br /&gt;
    function showMainPage() {&lt;br /&gt;
      currentPageId = null;&lt;br /&gt;
      updateSidebarActive(&#039;صفحه اصلی&#039;);&lt;br /&gt;
&lt;br /&gt;
      const defaultContent = pages.length === 0&lt;br /&gt;
        ? getWelcomeContent()&lt;br /&gt;
        : getRecentChangesContent();&lt;br /&gt;
&lt;br /&gt;
      document.getElementById(&#039;readView&#039;).innerHTML = defaultContent;&lt;br /&gt;
      document.getElementById(&#039;tab-read&#039;).click();&lt;br /&gt;
      document.getElementById(&#039;footerDate&#039;).textContent = formatDate(new Date().toISOString());&lt;br /&gt;
      window.scrollTo(0, 0);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function getWelcomeContent() {&lt;br /&gt;
      return `&lt;br /&gt;
        &amp;lt;h1 class=&amp;quot;article-title&amp;quot;&amp;gt;صفحه اصلی&amp;lt;/h1&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;ambox&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;span class=&amp;quot;ambox-icon&amp;quot;&amp;gt;📖&amp;lt;/span&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;به ویکی شخصی خود خوش آمدید! اینجا می‌توانید هر چیزی که یاد می‌گیرید را ذخیره کنید.&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;h2 style=&amp;quot;font-weight:400;font-size:1.4rem;margin:1.5rem 0 0.5rem;border-bottom:1px solid var(--border-light);padding-bottom:0.2rem;&amp;quot;&amp;gt;نحوه استفاده&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;برای شروع کار با این ویکی، از امکانات زیر استفاده کنید:&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;ul style=&amp;quot;margin:0.5rem 0 1rem 2rem;&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;li&amp;gt;&amp;lt;b&amp;gt;ایجاد صفحه جدید:&amp;lt;/b&amp;gt; از لینک «صفحه جدید» در بالای صفحه استفاده کنید.&amp;lt;/li&amp;gt;&lt;br /&gt;
          &amp;lt;li&amp;gt;&amp;lt;b&amp;gt;ویرایش صفحه:&amp;lt;/b&amp;gt; روی تب «ویرایش» کلیک کنید.&amp;lt;/li&amp;gt;&lt;br /&gt;
          &amp;lt;li&amp;gt;&amp;lt;b&amp;gt;پیوند بین صفحات:&amp;lt;/b&amp;gt; از &amp;lt;code&amp;gt;[[نام صفحه]]&amp;lt;/code&amp;gt; استفاده کنید.&amp;lt;/li&amp;gt;&lt;br /&gt;
          &amp;lt;li&amp;gt;&amp;lt;b&amp;gt;قالب‌بندی:&amp;lt;/b&amp;gt; از &amp;lt;code&amp;gt;== عنوان ==&amp;lt;/code&amp;gt; برای تیتر و &amp;lt;code&amp;gt;&#039;&#039;&#039;متن&#039;&#039;&#039;&amp;lt;/code&amp;gt; برای بولد استفاده کنید.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
        &amp;lt;h2 style=&amp;quot;font-weight:400;font-size:1.4rem;margin:1.5rem 0 0.5rem;border-bottom:1px solid var(--border-light);padding-bottom:0.2rem;&amp;quot;&amp;gt;شروع کنید&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;اکنون &amp;lt;a href=&amp;quot;#&amp;quot; onclick=&amp;quot;openCreateModal(); return false;&amp;quot;&amp;gt;&amp;lt;b&amp;gt;اولین صفحه خود را بسازید&amp;lt;/b&amp;gt;&amp;lt;/a&amp;gt; و شروع به یادداشت کنید!&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;h2 style=&amp;quot;font-weight:400;font-size:1.4rem;margin:1.5rem 0 0.5rem;border-bottom:1px solid var(--border-light);padding-bottom:0.2rem;&amp;quot;&amp;gt;راهنمای Wiki markup&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;table class=&amp;quot;infobox&amp;quot; style=&amp;quot;width:100%;float:none;&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;tr&amp;gt;&amp;lt;td class=&amp;quot;infobox-header&amp;quot; colspan=&amp;quot;2&amp;quot;&amp;gt;نمونه‌های قالب‌بندی&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
          &amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;عنوان بخش&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;&amp;lt;code&amp;gt;== عنوان ==&amp;lt;/code&amp;gt; یا &amp;lt;code&amp;gt;=== زیرعنوان ===&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
          &amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;متن بولد&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;&amp;lt;code&amp;gt;&#039;&#039;&#039;متن بولد&#039;&#039;&#039;&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
          &amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;متن ایتالیک&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;&amp;lt;code&amp;gt;&#039;&#039;متن ایتالیک&#039;&#039;&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
          &amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;لیست&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;&amp;lt;code&amp;gt;* مورد اول&amp;lt;/code&amp;gt; (ترتیبی: &amp;lt;code&amp;gt;# مورد اول&amp;lt;/code&amp;gt;)&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
          &amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;پیوند داخلی&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;&amp;lt;code&amp;gt;[[نام صفحه]]&amp;lt;/code&amp;gt; یا &amp;lt;code&amp;gt;[[نام|متن نمایشی]]&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
          &amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;پیوند خارجی&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;&amp;lt;code&amp;gt;[https://example.com متن لینک]&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
          &amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;یادآوری&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;&amp;lt;code&amp;gt;{{یادآوری|متن مهم}}&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
          &amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;کد&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;code&amp;amp;gt;کد&amp;amp;lt;/code&amp;amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
          &amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;خط جداکننده&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;&amp;lt;code&amp;gt;----&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;`;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function getRecentChangesContent() {&lt;br /&gt;
      const sorted = [...pages].sort((a, b) =&amp;gt; new Date(b.updatedAt) - new Date(a.updatedAt));&lt;br /&gt;
      const recent = sorted.slice(0, 10);&lt;br /&gt;
&lt;br /&gt;
      let html = `&lt;br /&gt;
        &amp;lt;h1 class=&amp;quot;article-title&amp;quot;&amp;gt;صفحه اصلی&amp;lt;/h1&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;ambox&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;span class=&amp;quot;ambox-icon&amp;quot;&amp;gt;🏠&amp;lt;/span&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;به ویکی شخصی خود خوش آمدید. &amp;lt;a href=&amp;quot;#&amp;quot; onclick=&amp;quot;openCreateModal(); return false;&amp;quot;&amp;gt;صفحه جدید ایجاد کنید&amp;lt;/a&amp;gt;.&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;h2 style=&amp;quot;font-weight:400;font-size:1.4rem;margin:1.5rem 0 0.5rem;border-bottom:1px solid var(--border-light);padding-bottom:0.2rem;&amp;quot;&amp;gt;تغییرات اخیر&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;آخرین صفحات ویرایش شده:&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;table style=&amp;quot;width:100%;border-collapse:collapse;margin:0.5rem 0;&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;tr style=&amp;quot;background:var(--tab-bg);&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;th style=&amp;quot;padding:0.4rem 0.6rem;border:1px solid var(--border-light);text-align:right;&amp;quot;&amp;gt;صفحه&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th style=&amp;quot;padding:0.4rem 0.6rem;border:1px solid var(--border-light);text-align:right;&amp;quot;&amp;gt;رده&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th style=&amp;quot;padding:0.4rem 0.6rem;border:1px solid var(--border-light);text-align:right;&amp;quot;&amp;gt;آخرین ویرایش&amp;lt;/th&amp;gt;&lt;br /&gt;
          &amp;lt;/tr&amp;gt;`;&lt;br /&gt;
&lt;br /&gt;
      recent.forEach(p =&amp;gt; {&lt;br /&gt;
        const cats = p.categories.length &amp;gt; 0 ? p.categories.join(&#039;, &#039;) : &#039;—&#039;;&lt;br /&gt;
        html += `&lt;br /&gt;
          &amp;lt;tr style=&amp;quot;cursor:pointer;&amp;quot; onclick=&amp;quot;navigateToPage(&#039;${p.title}&#039;)&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding:0.4rem 0.6rem;border:1px solid var(--border-light);&amp;quot;&amp;gt;&amp;lt;a href=&amp;quot;#&amp;quot; onclick=&amp;quot;event.preventDefault();navigateToPage(&#039;${p.title}&#039;)&amp;quot;&amp;gt;${escapeHtml(p.title)}&amp;lt;/a&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding:0.4rem 0.6rem;border:1px solid var(--border-light);color:var(--text-muted);&amp;quot;&amp;gt;${escapeHtml(cats)}&amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding:0.4rem 0.6rem;border:1px solid var(--border-light);color:var(--text-light);&amp;quot;&amp;gt;${formatDate(p.updatedAt)}&amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;/tr&amp;gt;`;&lt;br /&gt;
      });&lt;br /&gt;
&lt;br /&gt;
      html += `&amp;lt;/table&amp;gt;`;&lt;br /&gt;
&lt;br /&gt;
      // Stats&lt;br /&gt;
      html += `&lt;br /&gt;
        &amp;lt;h2 style=&amp;quot;font-weight:400;font-size:1.4rem;margin:1.5rem 0 0.5rem;border-bottom:1px solid var(--border-light);padding-bottom:0.2rem;&amp;quot;&amp;gt;آمار ویکی&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul style=&amp;quot;margin:0.5rem 0 1rem 2rem;&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;li&amp;gt;تعداد کل صفحات: &amp;lt;b&amp;gt;${pages.length}&amp;lt;/b&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
          &amp;lt;li&amp;gt;تعداد رده‌ها: &amp;lt;b&amp;gt;${new Set(pages.flatMap(p =&amp;gt; p.categories)).size}&amp;lt;/b&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
          &amp;lt;li&amp;gt;بزرگ‌ترین صفحه: &amp;lt;b&amp;gt;${pages.length &amp;gt; 0 ? pages.reduce((a, b) =&amp;gt; a.content.length &amp;gt; b.content.length ? a : b).title : &#039;—&#039;}&amp;lt;/b&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;`;&lt;br /&gt;
&lt;br /&gt;
      return html;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function showAllPages() {&lt;br /&gt;
      currentPageId = null;&lt;br /&gt;
      updateSidebarActive(&#039;همه صفحات&#039;);&lt;br /&gt;
&lt;br /&gt;
      const sorted = [...pages].sort((a, b) =&amp;gt; a.title.localeCompare(b.title, &#039;fa&#039;));&lt;br /&gt;
&lt;br /&gt;
      let html = `&amp;lt;h1 class=&amp;quot;article-title&amp;quot;&amp;gt;همه صفحات&amp;lt;/h1&amp;gt;`;&lt;br /&gt;
&lt;br /&gt;
      if (sorted.length === 0) {&lt;br /&gt;
        html += `&lt;br /&gt;
          &amp;lt;div class=&amp;quot;ambox&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;span class=&amp;quot;ambox-icon&amp;quot;&amp;gt;📭&amp;lt;/span&amp;gt;&lt;br /&gt;
            &amp;lt;span&amp;gt;هنوز هیچ صفحه‌ای وجود ندارد. &amp;lt;a href=&amp;quot;#&amp;quot; onclick=&amp;quot;openCreateModal(); return false;&amp;quot;&amp;gt;اولین صفحه را بسازید&amp;lt;/a&amp;gt;.&amp;lt;/span&amp;gt;&lt;br /&gt;
          &amp;lt;/div&amp;gt;`;&lt;br /&gt;
      } else {&lt;br /&gt;
        html += `&amp;lt;p&amp;gt;تعداد کل صفحات: &amp;lt;b&amp;gt;${sorted.length}&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;`;&lt;br /&gt;
        html += `&amp;lt;ul class=&amp;quot;special-list&amp;quot;&amp;gt;`;&lt;br /&gt;
        sorted.forEach(p =&amp;gt; {&lt;br /&gt;
          const catText = p.categories.length &amp;gt; 0 ? ` — ${p.categories.join(&#039;, &#039;)}` : &#039;&#039;;&lt;br /&gt;
          html += `&amp;lt;li&amp;gt;&amp;lt;a href=&amp;quot;#&amp;quot; onclick=&amp;quot;navigateToPage(&#039;${escapeHtml(p.title)}&#039;); return false;&amp;quot;&amp;gt;${escapeHtml(p.title)}&amp;lt;/a&amp;gt; &amp;lt;span class=&amp;quot;desc&amp;quot;&amp;gt;${catText} (${formatDate(p.updatedAt)})&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;`;&lt;br /&gt;
        });&lt;br /&gt;
        html += `&amp;lt;/ul&amp;gt;`;&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
      document.getElementById(&#039;readView&#039;).innerHTML = html;&lt;br /&gt;
      document.getElementById(&#039;tab-read&#039;).click();&lt;br /&gt;
      document.getElementById(&#039;footerDate&#039;).textContent = formatDate(new Date().toISOString());&lt;br /&gt;
      window.scrollTo(0, 0);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function navigateToPage(title) {&lt;br /&gt;
      const page = pages.find(p =&amp;gt; p.title === title || p.slug === slugify(title));&lt;br /&gt;
      if (page) {&lt;br /&gt;
        showPage(page.id);&lt;br /&gt;
      } else {&lt;br /&gt;
        // Page doesn&#039;t exist — offer to create&lt;br /&gt;
        if (confirm(`صفحه «${title}}» وجود ندارد. آیا می‌خواهید آن را بسازید؟`)) {&lt;br /&gt;
          editingPageId = null;&lt;br /&gt;
          document.getElementById(&#039;modalTitle&#039;).textContent = `ایجاد صفحه: ${title}`;&lt;br /&gt;
          document.getElementById(&#039;pageTitle&#039;).value = title;&lt;br /&gt;
          document.getElementById(&#039;pageCategory&#039;).value = &#039;&#039;;&lt;br /&gt;
          document.getElementById(&#039;pageContent&#039;).value = &#039;&#039;;&lt;br /&gt;
          document.getElementById(&#039;modalDeleteBtn&#039;).style.display = &#039;none&#039;;&lt;br /&gt;
          document.getElementById(&#039;editorModal&#039;).classList.add(&#039;show&#039;);&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function showPage(id) {&lt;br /&gt;
      const page = pages.find(p =&amp;gt; p.id === id);&lt;br /&gt;
      if (!page) return showMainPage();&lt;br /&gt;
&lt;br /&gt;
      currentPageId = id;&lt;br /&gt;
      updateSidebarActive(page.title);&lt;br /&gt;
&lt;br /&gt;
      const parsedContent = parseWikiMarkup(page.content);&lt;br /&gt;
&lt;br /&gt;
      // Build TOC from headings&lt;br /&gt;
      const headingMatches = page.content.match(/^==+\s*(.+?)\s*==+$/gm) || [];&lt;br /&gt;
      let tocHtml = &#039;&#039;;&lt;br /&gt;
      if (headingMatches.length &amp;gt;= 2) {&lt;br /&gt;
        tocHtml = `&amp;lt;div class=&amp;quot;toc&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;toc-title&amp;quot;&amp;gt;فهرست مطالب &amp;lt;span class=&amp;quot;toc-toggle&amp;quot; onclick=&amp;quot;this.parentElement.querySelector(&#039;ol&#039;).classList.toggle(&#039;hidden&#039;);&amp;quot;&amp;gt;[隐蔽]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;ol&amp;gt;`;&lt;br /&gt;
        headingMatches.forEach((h, i) =&amp;gt; {&lt;br /&gt;
          const depth = (h.match(/^=+/) || [&#039;==&#039;])[0].length - 2;&lt;br /&gt;
          const text = h.replace(/^=+\s*/, &#039;&#039;).replace(/\s*=+$/, &#039;&#039;);&lt;br /&gt;
          const indent = depth &amp;gt; 0 ? `style=&amp;quot;margin-right:${depth * 1.5}rem;&amp;quot;` : &#039;&#039;;&lt;br /&gt;
          tocHtml += `&amp;lt;li ${indent}&amp;gt;&amp;lt;a href=&amp;quot;#section-${i}&amp;quot;&amp;gt;${text}&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;`;&lt;br /&gt;
        });&lt;br /&gt;
        tocHtml += `&amp;lt;/ol&amp;gt;&amp;lt;/div&amp;gt;`;&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
      // Build categories&lt;br /&gt;
      let catHtml = &#039;&#039;;&lt;br /&gt;
      if (page.categories.length &amp;gt; 0) {&lt;br /&gt;
        catHtml = `&amp;lt;div class=&amp;quot;catlinks&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;رده‌ها:&amp;lt;/strong&amp;gt; ${page.categories.map(c =&amp;gt; `&amp;lt;a href=&amp;quot;#&amp;quot; onclick=&amp;quot;filterByCategory(&#039;${escapeHtml(c)}&#039;); return false;&amp;quot;&amp;gt;${escapeHtml(c)}&amp;lt;/a&amp;gt;`).join(&#039; &#039;)}&amp;lt;/div&amp;gt;`;&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
      // Infobox&lt;br /&gt;
      const wordCount = page.content.split(/\s+/).length;&lt;br /&gt;
      const charCount = page.content.length;&lt;br /&gt;
&lt;br /&gt;
      const infobox = `&lt;br /&gt;
        &amp;lt;div class=&amp;quot;infobox&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;infobox-header&amp;quot;&amp;gt;${escapeHtml(page.title)}&amp;lt;/div&amp;gt;&lt;br /&gt;
          &amp;lt;table&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;تاریخ ایجاد&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;${formatDate(page.createdAt)}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;آخرین ویرایش&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;${formatDate(page.updatedAt)}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;تعداد کلمات&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;${wordCount.toLocaleString(&#039;fa-IR&#039;)}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;تعداد حروف&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;${charCount.toLocaleString(&#039;fa-IR&#039;)}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
            ${page.categories.length &amp;gt; 0 ? `&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;رده‌ها&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;${page.categories.join(&#039;، &#039;)}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;` : &#039;&#039;}&lt;br /&gt;
          &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;`;&lt;br /&gt;
&lt;br /&gt;
      // Assemble&lt;br /&gt;
      let fullHtml = `&amp;lt;h1 class=&amp;quot;article-title&amp;quot;&amp;gt;${escapeHtml(page.title)}&amp;lt;/h1&amp;gt;`;&lt;br /&gt;
      fullHtml += infobox;&lt;br /&gt;
      fullHtml += tocHtml;&lt;br /&gt;
      fullHtml += parsedContent;&lt;br /&gt;
      fullHtml += `&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;`;&lt;br /&gt;
      fullHtml += catHtml;&lt;br /&gt;
&lt;br /&gt;
      // See also — links to other pages&lt;br /&gt;
      const otherPages = pages.filter(p =&amp;gt; p.id !== page.id).slice(0, 5);&lt;br /&gt;
      if (otherPages.length &amp;gt; 0) {&lt;br /&gt;
        fullHtml += `&amp;lt;h2 style=&amp;quot;font-weight:400;font-size:1.3rem;margin:1.5rem 0 0.5rem;border-bottom:1px solid var(--border-light);padding-bottom:0.2rem;&amp;quot;&amp;gt;همچنین ببینید&amp;lt;/h2&amp;gt;`;&lt;br /&gt;
        fullHtml += `&amp;lt;ul style=&amp;quot;margin:0.5rem 0;&amp;quot;&amp;gt;`;&lt;br /&gt;
        otherPages.forEach(p =&amp;gt; {&lt;br /&gt;
          fullHtml += `&amp;lt;li&amp;gt;&amp;lt;a href=&amp;quot;#&amp;quot; onclick=&amp;quot;navigateToPage(&#039;${escapeHtml(p.title)}&#039;); return false;&amp;quot;&amp;gt;${escapeHtml(p.title)}&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;`;&lt;br /&gt;
        });&lt;br /&gt;
        fullHtml += `&amp;lt;/ul&amp;gt;`;&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
      document.getElementById(&#039;readView&#039;).innerHTML = fullHtml;&lt;br /&gt;
      document.getElementById(&#039;tab-read&#039;).click();&lt;br /&gt;
      document.getElementById(&#039;footerDate&#039;).textContent = formatDate(page.updatedAt);&lt;br /&gt;
      window.scrollTo(0, 0);&lt;br /&gt;
&lt;br /&gt;
      updateSidebar();&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function renderEditView(id) {&lt;br /&gt;
      const page = id ? pages.find(p =&amp;gt; p.id === id) : null;&lt;br /&gt;
&lt;br /&gt;
      let html = `&amp;lt;h1 class=&amp;quot;article-title&amp;quot; style=&amp;quot;margin-bottom:1rem;&amp;quot;&amp;gt;${page ? &#039;ویرایش: &#039; + escapeHtml(page.title) : &#039;ایجاد صفحه جدید&#039;}&amp;lt;/h1&amp;gt;`;&lt;br /&gt;
&lt;br /&gt;
      html += `&lt;br /&gt;
        &amp;lt;div style=&amp;quot;background:var(--toc-bg);border:1px solid var(--border-light);padding:0.8rem;margin-bottom:1rem;font-size:0.88rem;&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;b&amp;gt;راهنمای سریع Wiki markup:&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
          &amp;lt;code&amp;gt;== عنوان ==&amp;lt;/code&amp;gt; · &amp;lt;code&amp;gt;&#039;&#039;&#039;بولد&#039;&#039;&#039;&amp;lt;/code&amp;gt; · &amp;lt;code&amp;gt;&#039;&#039;ایتالیک&#039;&#039;&amp;lt;/code&amp;gt; · &amp;lt;code&amp;gt;[[پیوند]]&amp;lt;/code&amp;gt; · &amp;lt;code&amp;gt;{{یادآوری|متن}}&amp;lt;/code&amp;gt; · &amp;lt;code&amp;gt;* لیست&amp;lt;/code&amp;gt; · &amp;lt;code&amp;gt;&amp;amp;lt;code&amp;amp;gt;kod&amp;amp;lt;/code&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;form-group&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;label&amp;gt;عنوان صفحه&amp;lt;/label&amp;gt;&lt;br /&gt;
          &amp;lt;input type=&amp;quot;text&amp;quot; id=&amp;quot;editTitle&amp;quot; value=&amp;quot;${page ? escapeHtml(page.title) : &#039;&#039;}&amp;quot; placeholder=&amp;quot;عنوان صفحه&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;form-group&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;label&amp;gt;رده‌ها (با کاما جدا کنید)&amp;lt;/label&amp;gt;&lt;br /&gt;
          &amp;lt;input type=&amp;quot;text&amp;quot; id=&amp;quot;editCategories&amp;quot; value=&amp;quot;${page ? page.categories.join(&#039;, &#039;) : &#039;&#039;}&amp;quot; placeholder=&amp;quot;برنامه‌نویسی, یادداشت&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;form-group&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;label&amp;gt;محتوا&amp;lt;/label&amp;gt;&lt;br /&gt;
          &amp;lt;textarea id=&amp;quot;editContent&amp;quot; placeholder=&amp;quot;محتوای صفحه را اینجا بنویسید...&amp;quot;&amp;gt;${page ? page.content : &#039;&#039;}&amp;lt;/textarea&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div style=&amp;quot;display:flex;gap:0.5rem;&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;button class=&amp;quot;btn-save&amp;quot; onclick=&amp;quot;saveFromEditor(${id ? `&#039;${id}&#039;` : &#039;null&#039;})&amp;quot;&amp;gt;ذخیره صفحه&amp;lt;/button&amp;gt;&lt;br /&gt;
          &amp;lt;button class=&amp;quot;btn-cancel&amp;quot; onclick=&amp;quot;cancelEdit()&amp;quot;&amp;gt;لغو&amp;lt;/button&amp;gt;&lt;br /&gt;
          ${page ? `&amp;lt;button class=&amp;quot;btn-delete&amp;quot; onclick=&amp;quot;deletePage(&#039;${id}&#039;)&amp;quot;&amp;gt;حذف صفحه&amp;lt;/button&amp;gt;` : &#039;&#039;}&lt;br /&gt;
        &amp;lt;/div&amp;gt;`;&lt;br /&gt;
&lt;br /&gt;
      document.getElementById(&#039;editView&#039;).innerHTML = html;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function switchTab(tab) {&lt;br /&gt;
      if (tab === &#039;read&#039;) {&lt;br /&gt;
        document.getElementById(&#039;tab-read&#039;).classList.add(&#039;active&#039;);&lt;br /&gt;
        document.getElementById(&#039;tab-edit&#039;).classList.remove(&#039;active&#039;);&lt;br /&gt;
        document.getElementById(&#039;readView&#039;).style.display = &#039;&#039;;&lt;br /&gt;
        document.getElementById(&#039;editView&#039;).style.display = &#039;none&#039;;&lt;br /&gt;
      } else {&lt;br /&gt;
        document.getElementById(&#039;tab-edit&#039;).classList.add(&#039;active&#039;);&lt;br /&gt;
        document.getElementById(&#039;tab-read&#039;).classList.remove(&#039;active&#039;);&lt;br /&gt;
        document.getElementById(&#039;readView&#039;).style.display = &#039;none&#039;;&lt;br /&gt;
        document.getElementById(&#039;editView&#039;).style.display = &#039;&#039;;&lt;br /&gt;
        renderEditView(currentPageId);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function cancelEdit() {&lt;br /&gt;
      if (currentPageId) {&lt;br /&gt;
        switchTab(&#039;read&#039;);&lt;br /&gt;
      } else {&lt;br /&gt;
        showMainPage();&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function saveFromEditor(id) {&lt;br /&gt;
      const title = document.getElementById(&#039;editTitle&#039;).value.trim();&lt;br /&gt;
      const cats = document.getElementById(&#039;editCategories&#039;).value.split(&#039;,&#039;).map(c =&amp;gt; c.trim()).filter(Boolean);&lt;br /&gt;
      const content = document.getElementById(&#039;editContent&#039;).value;&lt;br /&gt;
&lt;br /&gt;
      if (!title) { document.getElementById(&#039;editTitle&#039;).focus(); return; }&lt;br /&gt;
      if (!content) { document.getElementById(&#039;editContent&#039;).focus(); return; }&lt;br /&gt;
&lt;br /&gt;
      if (id) {&lt;br /&gt;
        const page = pages.find(p =&amp;gt; p.id === id);&lt;br /&gt;
        if (page) {&lt;br /&gt;
          page.title = title;&lt;br /&gt;
          page.slug = slugify(title);&lt;br /&gt;
          page.categories = cats;&lt;br /&gt;
          page.content = content;&lt;br /&gt;
          page.updatedAt = new Date().toISOString();&lt;br /&gt;
        }&lt;br /&gt;
      } else {&lt;br /&gt;
        const newPage = {&lt;br /&gt;
          id: genId(),&lt;br /&gt;
          title,&lt;br /&gt;
          slug: slugify(title),&lt;br /&gt;
          categories: cats,&lt;br /&gt;
          content,&lt;br /&gt;
          createdAt: new Date().toISOString(),&lt;br /&gt;
          updatedAt: new Date().toISOString(),&lt;br /&gt;
        };&lt;br /&gt;
        pages.push(newPage);&lt;br /&gt;
        currentPageId = newPage.id;&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
      save();&lt;br /&gt;
      showPage(currentPageId);&lt;br /&gt;
      updateSidebar();&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // ===== Modal helpers =====&lt;br /&gt;
    function openCreateModal() {&lt;br /&gt;
      editingPageId = null;&lt;br /&gt;
      document.getElementById(&#039;modalTitle&#039;).textContent = &#039;ایجاد صفحه جدید&#039;;&lt;br /&gt;
      document.getElementById(&#039;pageTitle&#039;).value = &#039;&#039;;&lt;br /&gt;
      document.getElementById(&#039;pageCategory&#039;).value = &#039;&#039;;&lt;br /&gt;
      document.getElementById(&#039;pageContent&#039;).value = &#039;&#039;;&lt;br /&gt;
      document.getElementById(&#039;modalDeleteBtn&#039;).style.display = &#039;none&#039;;&lt;br /&gt;
      document.getElementById(&#039;editorModal&#039;).classList.add(&#039;show&#039;);&lt;br /&gt;
      document.getElementById(&#039;pageTitle&#039;).focus();&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function savePage() {&lt;br /&gt;
      const title = document.getElementById(&#039;pageTitle&#039;).value.trim();&lt;br /&gt;
      const cats = document.getElementById(&#039;pageCategory&#039;).value.split(&#039;,&#039;).map(c =&amp;gt; c.trim()).filter(Boolean);&lt;br /&gt;
      const content = document.getElementById(&#039;pageContent&#039;).value;&lt;br /&gt;
&lt;br /&gt;
      if (!title) { document.getElementById(&#039;pageTitle&#039;).focus(); return; }&lt;br /&gt;
      if (!content) { document.getElementById(&#039;pageContent&#039;).focus(); return; }&lt;br /&gt;
&lt;br /&gt;
      const newPage = {&lt;br /&gt;
        id: genId(),&lt;br /&gt;
        title,&lt;br /&gt;
        slug: slugify(title),&lt;br /&gt;
        categories: cats,&lt;br /&gt;
        content,&lt;br /&gt;
        createdAt: new Date().toISOString(),&lt;br /&gt;
        updatedAt: new Date().toISOString(),&lt;br /&gt;
      };&lt;br /&gt;
&lt;br /&gt;
      pages.push(newPage);&lt;br /&gt;
      save();&lt;br /&gt;
      closeModal(&#039;editorModal&#039;);&lt;br /&gt;
      currentPageId = newPage.id;&lt;br /&gt;
      showPage(newPage.id);&lt;br /&gt;
      updateSidebar();&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function deletePage(id) {&lt;br /&gt;
      if (!confirm(&#039;آیا مطمئن هستید که می‌خواهید این صفحه را حذف کنید؟&#039;)) return;&lt;br /&gt;
      pages = pages.filter(p =&amp;gt; p.id !== id);&lt;br /&gt;
      save();&lt;br /&gt;
      currentPageId = null;&lt;br /&gt;
      showMainPage();&lt;br /&gt;
      updateSidebar();&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function deleteCurrentPage() {&lt;br /&gt;
      if (currentPageId) deletePage(currentPageId);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function closeModal(id) {&lt;br /&gt;
      document.getElementById(id).classList.remove(&#039;show&#039;);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // ===== Sidebar =====&lt;br /&gt;
    function updateSidebar() {&lt;br /&gt;
      const navPages = document.getElementById(&#039;navPages&#039;);&lt;br /&gt;
      const sorted = [...pages].sort((a, b) =&amp;gt; b.updatedAt.localeCompare(a.updatedAt));&lt;br /&gt;
      const recent = sorted.slice(0, 8);&lt;br /&gt;
&lt;br /&gt;
      let html = `&amp;lt;li&amp;gt;&amp;lt;a href=&amp;quot;#&amp;quot; class=&amp;quot;${!currentPageId ? &#039;active-page&#039; : &#039;&#039;}&amp;quot; onclick=&amp;quot;showMainPage(); return false;&amp;quot;&amp;gt;صفحه اصلی&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;`;&lt;br /&gt;
      recent.forEach(p =&amp;gt; {&lt;br /&gt;
        html += `&amp;lt;li&amp;gt;&amp;lt;a href=&amp;quot;#&amp;quot; class=&amp;quot;${currentPageId === p.id ? &#039;active-page&#039; : &#039;&#039;}&amp;quot; onclick=&amp;quot;navigateToPage(&#039;${escapeHtml(p.title)}&#039;); return false;&amp;quot;&amp;gt;${escapeHtml(p.title)}&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;`;&lt;br /&gt;
      });&lt;br /&gt;
      navPages.innerHTML = html;&lt;br /&gt;
&lt;br /&gt;
      // Categories&lt;br /&gt;
      const allCats = [...new Set(pages.flatMap(p =&amp;gt; p.categories))].sort();&lt;br /&gt;
      const catList = document.getElementById(&#039;categoryList&#039;);&lt;br /&gt;
      catList.innerHTML = allCats.map(c =&amp;gt;&lt;br /&gt;
        `&amp;lt;li&amp;gt;&amp;lt;a href=&amp;quot;#&amp;quot; onclick=&amp;quot;filterByCategory(&#039;${escapeHtml(c)}&#039;); return false;&amp;quot;&amp;gt;${escapeHtml(c)}&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;`&lt;br /&gt;
      ).join(&#039;&#039;);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function updateSidebarActive(title) {&lt;br /&gt;
      document.querySelectorAll(&#039;.sidebar-section li a&#039;).forEach(a =&amp;gt; {&lt;br /&gt;
        a.classList.remove(&#039;active-page&#039;);&lt;br /&gt;
        if (a.textContent.trim() === title) a.classList.add(&#039;active-page&#039;);&lt;br /&gt;
      });&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function filterByCategory(cat) {&lt;br /&gt;
      const matching = pages.filter(p =&amp;gt; p.categories.includes(cat));&lt;br /&gt;
      let html = `&amp;lt;h1 class=&amp;quot;article-title&amp;quot;&amp;gt;رده: ${escapeHtml(cat)}&amp;lt;/h1&amp;gt;`;&lt;br /&gt;
      html += `&amp;lt;p&amp;gt;تعداد صفحات در این رده: &amp;lt;b&amp;gt;${matching.length}&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;`;&lt;br /&gt;
&lt;br /&gt;
      if (matching.length &amp;gt; 0) {&lt;br /&gt;
        html += `&amp;lt;ul class=&amp;quot;special-list&amp;quot;&amp;gt;`;&lt;br /&gt;
        matching.forEach(p =&amp;gt; {&lt;br /&gt;
          html += `&amp;lt;li&amp;gt;&amp;lt;a href=&amp;quot;#&amp;quot; onclick=&amp;quot;navigateToPage(&#039;${escapeHtml(p.title)}&#039;); return false;&amp;quot;&amp;gt;${escapeHtml(p.title)}&amp;lt;/a&amp;gt; &amp;lt;span class=&amp;quot;desc&amp;quot;&amp;gt;(${formatDate(p.updatedAt)})&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;`;&lt;br /&gt;
        });&lt;br /&gt;
        html += `&amp;lt;/ul&amp;gt;`;&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
      document.getElementById(&#039;readView&#039;).innerHTML = html;&lt;br /&gt;
      document.getElementById(&#039;tab-read&#039;).click();&lt;br /&gt;
      window.scrollTo(0, 0);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // ===== Search =====&lt;br /&gt;
    function searchPages() {&lt;br /&gt;
      const query = document.getElementById(&#039;globalSearch&#039;).value.trim().toLowerCase() ||&lt;br /&gt;
                    document.getElementById(&#039;sidebarSearch&#039;).value.trim().toLowerCase();&lt;br /&gt;
&lt;br /&gt;
      if (!query) {&lt;br /&gt;
        if (currentPageId) return showPage(currentPageId);&lt;br /&gt;
        return showMainPage();&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
      const results = pages.filter(p =&amp;gt;&lt;br /&gt;
        p.title.toLowerCase().includes(query) ||&lt;br /&gt;
        p.content.toLowerCase().includes(query) ||&lt;br /&gt;
        p.categories.some(c =&amp;gt; c.toLowerCase().includes(query))&lt;br /&gt;
      );&lt;br /&gt;
&lt;br /&gt;
      let html = `&amp;lt;h1 class=&amp;quot;article-title&amp;quot;&amp;gt;نتایج جستجو: «${escapeHtml(query)}»&amp;lt;/h1&amp;gt;`;&lt;br /&gt;
      html += `&amp;lt;p&amp;gt;${results.length} نتیجه یافت شد.&amp;lt;/p&amp;gt;`;&lt;br /&gt;
&lt;br /&gt;
      if (results.length &amp;gt; 0) {&lt;br /&gt;
        html += `&amp;lt;ul class=&amp;quot;special-list&amp;quot;&amp;gt;`;&lt;br /&gt;
        results.forEach(p =&amp;gt; {&lt;br /&gt;
          // Show context snippet&lt;br /&gt;
          const idx = p.content.toLowerCase().indexOf(query);&lt;br /&gt;
          let snippet = &#039;&#039;;&lt;br /&gt;
          if (idx !== -1) {&lt;br /&gt;
            const start = Math.max(0, idx - 40);&lt;br /&gt;
            const end = Math.min(p.content.length, idx + query.length + 60);&lt;br /&gt;
            snippet = (start &amp;gt; 0 ? &#039;...&#039; : &#039;&#039;) + p.content.substring(start, end) + (end &amp;lt; p.content.length ? &#039;...&#039; : &#039;&#039;);&lt;br /&gt;
          }&lt;br /&gt;
          html += `&amp;lt;li&amp;gt;&amp;lt;a href=&amp;quot;#&amp;quot; onclick=&amp;quot;navigateToPage(&#039;${escapeHtml(p.title)}&#039;); return false;&amp;quot;&amp;gt;${escapeHtml(p.title)}&amp;lt;/a&amp;gt;`;&lt;br /&gt;
          if (snippet) html += `&amp;lt;br&amp;gt;&amp;lt;span class=&amp;quot;desc&amp;quot;&amp;gt;${escapeHtml(snippet)}&amp;lt;/span&amp;gt;`;&lt;br /&gt;
          html += `&amp;lt;/li&amp;gt;`;&lt;br /&gt;
        });&lt;br /&gt;
        html += `&amp;lt;/ul&amp;gt;`;&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
      document.getElementById(&#039;readView&#039;).innerHTML = html;&lt;br /&gt;
      document.getElementById(&#039;tab-read&#039;).click();&lt;br /&gt;
      window.scrollTo(0, 0);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // ===== Import/Export =====&lt;br /&gt;
    function exportData() {&lt;br /&gt;
      const data = JSON.stringify(pages, null, 2);&lt;br /&gt;
      const blob = new Blob([data], { type: &#039;application/json&#039; });&lt;br /&gt;
      const url = URL.createObjectURL(blob);&lt;br /&gt;
      const a = document.createElement(&#039;a&#039;);&lt;br /&gt;
      a.href = url;&lt;br /&gt;
      a.download = `wiki-backup-${new Date().toISOString().slice(0, 10)}.json`;&lt;br /&gt;
      a.click();&lt;br /&gt;
      URL.revokeObjectURL(url);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function importData() {&lt;br /&gt;
      document.getElementById(&#039;importInput&#039;).click();&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function handleImport(event) {&lt;br /&gt;
      const file = event.target.files[0];&lt;br /&gt;
      if (!file) return;&lt;br /&gt;
      const reader = new FileReader();&lt;br /&gt;
      reader.onload = (e) =&amp;gt; {&lt;br /&gt;
        try {&lt;br /&gt;
          const data = JSON.parse(e.target.result);&lt;br /&gt;
          if (!Array.isArray(data)) throw new Error(&#039;Invalid format&#039;);&lt;br /&gt;
          if (confirm(`آیا می‌خواهید ${data.length} صفحه را وارد کنید؟ (صفحات فعلی حفظ می‌شوند)`)) {&lt;br /&gt;
            data.forEach(p =&amp;gt; {&lt;br /&gt;
              if (p.title &amp;amp;&amp;amp; p.content) {&lt;br /&gt;
                pages.push({&lt;br /&gt;
                  id: p.id || genId(),&lt;br /&gt;
                  title: p.title,&lt;br /&gt;
                  slug: p.slug || slugify(p.title),&lt;br /&gt;
                  categories: p.categories || [],&lt;br /&gt;
                  content: p.content,&lt;br /&gt;
                  createdAt: p.createdAt || new Date().toISOString(),&lt;br /&gt;
                  updatedAt: p.updatedAt || new Date().toISOString(),&lt;br /&gt;
                });&lt;br /&gt;
              }&lt;br /&gt;
            });&lt;br /&gt;
            save();&lt;br /&gt;
            showMainPage();&lt;br /&gt;
            updateSidebar();&lt;br /&gt;
            alert(`${data.length} صفحه با موفقیت وارد شد.`);&lt;br /&gt;
          }&lt;br /&gt;
        } catch (err) {&lt;br /&gt;
          alert(&#039;خطا در خواندن فایل. لطفاً فایل JSON معتبر وارد کنید.&#039;);&lt;br /&gt;
        }&lt;br /&gt;
      };&lt;br /&gt;
      reader.readAsText(file);&lt;br /&gt;
      event.target.value = &#039;&#039;;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // ===== Helpers =====&lt;br /&gt;
    function formatDate(iso) {&lt;br /&gt;
      if (!iso) return &#039;—&#039;;&lt;br /&gt;
      return new Date(iso).toLocaleDateString(&#039;fa-IR&#039;, { year: &#039;numeric&#039;, month: &#039;short&#039;, day: &#039;numeric&#039;, hour: &#039;2-digit&#039;, minute: &#039;2-digit&#039; });&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function escapeHtml(text) {&lt;br /&gt;
      const d = document.createElement(&#039;div&#039;);&lt;br /&gt;
      d.textContent = text;&lt;br /&gt;
      return d.innerHTML;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // ===== Keyboard Shortcuts =====&lt;br /&gt;
    document.addEventListener(&#039;keydown&#039;, (e) =&amp;gt; {&lt;br /&gt;
      if (e.key === &#039;Escape&#039;) {&lt;br /&gt;
        document.querySelectorAll(&#039;.modal-overlay.show&#039;).forEach(m =&amp;gt; m.classList.remove(&#039;show&#039;));&lt;br /&gt;
      }&lt;br /&gt;
      if (e.key === &#039;n&#039; &amp;amp;&amp;amp; (e.ctrlKey || e.metaKey)) {&lt;br /&gt;
        e.preventDefault();&lt;br /&gt;
        openCreateModal();&lt;br /&gt;
      }&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    // Close modal on overlay click&lt;br /&gt;
    document.querySelectorAll(&#039;.modal-overlay&#039;).forEach(o =&amp;gt; {&lt;br /&gt;
      o.addEventListener(&#039;click&#039;, (e) =&amp;gt; { if (e.target === o) o.classList.remove(&#039;show&#039;); });&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    // ===== Init =====&lt;br /&gt;
    updateSidebar();&lt;br /&gt;
    showMainPage();&lt;br /&gt;
  &amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
</feed>