Claude Code — Persian / RTL (Vazirmatn)
راستبهچپ کردنِ پنل چت Claude Code با تشخیص خودکار فارسی/انگلیسی، فونت وزیرمتن،
و — برخلاف افزونههای قبلی — درستشدنِ کادر نوشتن (input) نه فقط حبابهای چت.
Make the Claude Code chat panel right-to-left, with automatic Persian/English
bidi detection, the bundled Vazirmatn font, and — unlike earlier add-ons —
a properly RTL message input box, not just the chat bubbles.
چه میکند؟ / What it does
- RTL با تشخیص خودکار: هر پاراگراف بر اساس محتوای خودش جهت میگیرد (
dir="auto").
متن فارسی راستچین، متن انگلیسی چپچین. به متن انگلیسی احترام گذاشته میشود.
- کادر ورودی هم درست میشود: کامپوزر Claude یک
contenteditable شفاف روی یک
لایهی نمایش (mentionMirror) است؛ این افزونه هر دو لایه را با هم RTL میکند تا
مکاننما و متن همتراز بمانند. این همان چیزی است که افزونههای قبلی جا انداخته بودند.
- فونت وزیرمتن (bundled): نیازی به نصب فونت روی سیستم نیست. کد و ترمینال
monospace باقی میمانند.
- بدون تغییر امنیتی: فونت از همان مبدأ webview لود میشود (سیاست
font-src
فعلی اجازه میدهد)؛ هیچ تغییری در CSP، هیچ شبکهای، هیچ evalی.
- چندادیتوری و چندسیستمی: VS Code، Cursor، Windsurf، Antigravity روی
Windows / macOS / Linux.
- خودترمیم: بعد از هر آپدیت Claude Code خودش دوباره اعمال میشود.
چطور کار میکند؟ / How it works
پنل چت Claude Code یک webview است که HTMLش در زمان اجرا ساخته میشود، پس تنها راهِ
استایلدهی، تزریق به دو فایل ثابتِ بارگذاریشده است:
webview/index.css و webview/index.js. این افزونه یک بلوک نشانهگذاریشده به انتهای
هر کدام اضافه میکند و فایل اصلی را در *.ccp.bak نگه میدارد.
Claude Code's chat panel is a webview whose HTML is generated at runtime, so the
only way to restyle it is to inject into the two static assets it loads. We append
a marked block to webview/index.css and webview/index.js, keeping a pristine
*.ccp.bak backup. The font is copied into webview/persian-rtl-assets/.
نصب / Install
از Marketplace (بعد از انتشار) / from Marketplace (once published):
code --install-extension bakhtarimohammad.claude-code-persian
یا در ادیتور Ctrl+Shift+X → جستجوی «Claude Persian».
از روی سورس (بدون Marketplace) / from source:
cd tooling/claude-code-persian
npm install
npm run package # -> claude-code-persian-1.0.0.vsix
code --install-extension claude-code-persian-1.0.0.vsix
# سپس پنجره را Reload کنید (Developer: Reload Window)
اعمال فوری بدون نصب افزونه (CLI):
node bin/apply.js status # لیست نصبها و وضعیت
node bin/apply.js apply # اعمال RTL + وزیرمتن
node bin/apply.js remove # بازگرداندن به حالت اصلی
دستورها / Commands (Ctrl+Shift+P)
| دستور |
کار |
Claude Persian: Enable |
اعمال RTL + فونت روی همهی نصبها |
Claude Persian: Disable |
بازگرداندن فایلهای اصلی |
Claude Persian: Re-apply now |
اعمال دوباره (مثلاً بعد از تغییر فونت) |
Claude Persian: Show Log |
لاگ |
تنظیمات / Settings
| کلید |
پیشفرض |
توضیح |
claudePersian.enabled |
true |
فعال نگهداشتن و ریاپلای خودکار بعد از آپدیت |
claudePersian.fontFamily |
Vazirmatn |
فونت اصلی پنل (هر فونت دیگری باید روی سیستم نصب باشد) |
claudePersian.lineHeight |
1.85 |
فاصلهی خطوط متن فارسی |
برگرداندن کامل / Full revert
قبل از حذف افزونه، یکبار Claude Persian: Disable را اجرا کنید تا فایلهای
اصلی Claude Code بازگردانده شوند. (حذف افزونه بهتنهایی وصله را برنمیدارد چون
deactivate در هر بستنِ پنجره اجرا میشود و نباید هر بار فایلها را دستکاری کند.)
محدودیتها / Limitations
- وصله روی فایلهای افزونهی Claude Code اعمال میشود؛ بعد از آپدیت، افزونه خودش
دوباره اعمال میکند (یکبار Reload لازم است).
- یک پنل فرعیِ کوچکِ Claude با CSP سختگیرانه (که
index.css/js را اصلاً لود
نمیکند) تحت تأثیر قرار نمیگیرد — پنل اصلی چت کامل پوشش داده میشود.
- با
adiryad.claude-rtl-code تداخل دارد (هر دو همان فایلها را تغییر میدهند).
این افزونه نشانههای آن را پاک میکند، ولی بهتر است آن افزونه حذف شود.
لایسنس / License
کد: MIT. فونت Vazirmatn تحت SIL Open Font License 1.1 (متن کامل در
fonts/OFL.txt) — ساختهی صابر راستیکردار.