TermDOM 0.1.5 اومد: یه DOM واقعی برای ترمینال
خلاصهٔ کاملتر
TermDOM یه پروژهست که بهجای اینکه DOM رو فقط شبیهسازی کنه، واقعا محرک لایهچینی (layout)، CSSOM و رندر مرورگر رو از صفر پیاده کرده، با این تفاوت که خروجی نهایی بهجای پیکسل روی صفحه گرافیکی، کاراکترهای ترمینال هستن. نسخهی ۰.۱.۵ ش تازه منتشر شده و هم قابلیتهای تازه اضافه کرده هم یه باگ کارایی جدی رو رفع کرده.
تو این نسخه پشتیبانی از CSS Grid (چیدمان و اندازهی ستونها) اضافه شده، اسکرول واقعی روی کانتینرهای overflow کار میکنه، کلیپبورد (کپی و پیست) و Selection.modify() برای انتخاب متن با گرانولاریتی کاراکتر، کلمه و خط پیاده شدن. علاوه بر این، ناوبری فوکوس دقیقا طبق مدل اسکوپ HTML عمل میکنه (هر شادو روت و اسلات اسکوپ فوکوس جدا داره)، رنگهای سیستمی CSS روی پالت ترمینال مپ شدن، و ورودی IME (برای تایپ زبانهایی مثل چینی و ژاپنی) هم پشتیبانی میشه.
مهمترین رفع باگ این نسخه مربوط به کاراییه: رندر اولیهی یه صفحهی پر از ویجت از ۴۳ ثانیه به ۳۷۴ میلیثانیه رسیده، چون معلوم شد شیت استایل شادو یه فرم داشت کل کسکید سند رو چندبار از نو میساخت. حالا هر شیت شادو فقط روت خودشو رفرش میکنه و رندر اولیه دوباره خطی نسبت به اندازهی سند شده. علاوه بر این focus() حالا داخل شادو تریها هم درست کار میکنه و requestAnimationFrame زنجیرهای شده، یعنی یه callback که فریم بعدی رو زمانبندی میکنه، درست تو همون فریم بعدی اجرا میشه.
برای سنجش دقت پیادهسازی، مجموعه تستهای استاندارد WPT (Web Platform Tests) مستقیم روی خود TermDOM اجرا شدن، با یه بکاند تستدرایور که اکشنهای کیبورد و کلیک وبدرایور رو به بایتهایی که یه ترمینال واقعی میفرسته تبدیل میکنه. از این تستها ۹۵٬۰۶۴ مورد قبول شدن و ۱٬۳۸۹ مورد رد شدن، که دلیل هر کدوم از موارد رد شده مستند شده.
نکات کلیدی:
- نسخه ۰.۱.۵ رندر اولیهی صفحههای پر از ویجت رو از ۴۳ ثانیه به ۳۷۴ میلیثانیه رسونده
- پشتیبانی تازه از CSS Grid، کلیپبورد، Selection.modify() و ورودی IME اضافه شده
- ناوبری فوکوس حالا کاملا مطابق مدل اسکوپ HTML و شادو DOM عمل میکنه
- روی تستهای استاندارد WPT، ۹۵٬۰۶۴ مورد قبول و ۱٬۳۸۹ مورد رد شدن




