متن فارسی را در پنجرههای چت Claude Code و در پیشنمایش فایلهای Markdown راستبهچپ نشان میدهد؛
انگلیسی و کد چپبهراست میمانند.
جهت هر بند
جهت از کلمهها تعیین میشود، نه از اولین حرف (direction.js): اگر حتی یک کلمهٔ یک بند فارسی باشد،
بند راستبهچپ است (قاعدهٔ ۲۰۲۶-۱۰-۱۶؛ پیش از آن ۴۰٪ کلمهها لازم بود). dir="auto" و
unicode-bidi: plaintext با اولین حرف تصمیم میگیرند و برای همین «Wix و Shopify تامبنیلها را …» را
چپبهراست نشان میدادند. کد درونخطی حساب نمیشود.
بند، تیتر، آیتم فهرست و خانهٔ جدول: جهت کلمههای خودش (آیتم بدون زیرفهرستش).
فهرست، نقلقول و جدول: جهت همهٔ متن داخلش (سمت گلولهها، خط نقلقول، ترتیب ستونها).
در چت همین قاعده روی پیام خودت و کادر نوشتن هم اعمال میشود و با رسیدن تکهتکهٔ جواب دوباره حساب میشود.
بیرون از متن جوابها (پنل سؤالها، توضیح ابزارها، پیام سادهٔ نمای Focus، …) هر بلوکی که در نوشتهٔ
خودش یا spanهای داخلش کلمهٔ فارسی داشته باشد راستبهچپ میشود و نوشتهٔ انگلیسی دست نمیخورد.
dir="auto"ای که خود Claude Code روی پیام ساده میگذارد (با اولین حرف تصمیم میگیرد) جایگزین
میشود؛ dir="ltr" یا "rtl" خودش دست نمیخورد. نوشتهای که Claude Code چپچین کرده بود
(text-align: left) بعد از برگشتن راستچین میشود (data-vcr-align)؛ وسطچین وسط میماند.
پنل سؤالها (questionBlock) یکجا برمیگردد تا دکمههای انتخاب هم سمت راست بروند.
پیشنمایش Markdown
از راه رسمی VS Code: markdown.previewStyles و یک افزونهٔ markdown-it که dir هر بلوک را میگذارد.
چیزی بیرون از این افزونه عوض نمیشود.
چت Claude Code
هیچ افزونهای به صفحهٔ افزونهٔ دیگری راه ندارد، پس این افزونه به ته webview/index.css و
webview/index.js خود Claude Code یک بلوک (بین /* VAHID-CODE-RTL-START */ و END) اضافه میکند؛
سر هر بار باز شدن VS Code و بعد از هر بهروزرسانی Claude Code دوباره.
نسخهٔ دستنخوردهٔ هر فایل کنارش نگه داشته میشود (*.vahid-code-rtl.orig) و وصله همیشه از آن ساخته
میشود؛ برداشتن وصله (دستور یا حذف افزونه) همان را برمیگرداند.
هر نوشتن اول در یک فایل موقت انجام میشود و بعد جای فایل اصلی مینشیند (rename)، تا هیچ پنجرهای
هیچوقت فایل نیمهنوشته نخواند. نسخهٔ 1.0.0 (vahid.persian-rtl) فایل را درجا بازنویسی میکرد و یک بار
index.js را نصفه گذاشت؛ همهٔ پنجرههای Claude Code سفید شدند.
نسخههایی که VS Code برای پاک شدن علامت زده (.obsolete) دست نمیخورند.
بلوک افزونهٔ Vahid Code Notes (/* VAHID-CODE-NOTES-START */) که بعد از این بلوک میآید، با هر بار
نوشتن یا برداشتن این وصله دستنخورده میماند و هیچوقت وارد نسخهٔ دستنخورده نمیشود.
دستورها و تنظیمات
Vahid Code RTL: اعمال دوبارهٔ راستچین روی چت Claude Code
Vahid Code RTL: برداشتن راستچین از چت Claude Code
node scripts/test-patch.js # روی یک کپی از Claude Code نصبشده، با ۲۴ پنجرهٔ همزمان
node scripts/test-dom.js --shot /tmp/dom.png # صفحهای به شکل webview در Chrome بیسر: جهت هر عنصر
python3 -I scripts/build-vsix.py # vahid-code-rtl-<version>.vsix
code --install-extension vahid-code-rtl-1.4.0.vsix