وضعیت
console.logفعالconsole.clearبهندرت استفاده میشودYogaفعالTurbolog encoderفعالDevTools Throttlerرعایت میشودtextjs.orgفعالبنچمارک زنده
خط پردازش @textjs/core در این زبانه روی داشبوردی با ابعاد 100×32 اجرا میشود و فریمها را در کنسولی درون حافظه مینویسد.
- فریم کامل
- —
- چیدمان + ترسیم + کدگذاری
- تایپ
- —
- ویرایش یک ردیف
- فریم بیکار
- —
- چیزی تغییر نکرده است
- spanهای %c
- —
- 3,200 سلول
پس از بیکار شدن صفحه، خودکار آغاز میشود.
تاریخچه عملکرد
packages/core/test/perf.test.ts در هر نقطه عطف، روی همان دستگاه (Apple M5 Pro · Bun 1.4.4). میانگین 1,000 فریم.
| انتشار | فریم کامل | تایپ | بیکار | spanهای %c |
|---|---|---|---|---|
0.1.0مارس 2025 · @textjs/core · 7c91cea | 0.194ms | 0.065ms | 0.043ms | 205 |
0.2.0ژوئیه 2025 · textjs.org · 92437cc | 0.192ms | 0.067ms | 0.042ms | 205 |
0.3.0نوامبر 2025 · 10× input · 8c2d1b1 | 0.205ms | 0.065ms | 0.043ms | 146 |
0.3.0نوامبر 2025 · Mobile pass · e2e6e46 | 0.212ms | 0.067ms | 0.045ms | 146 |
0.4.0مه 2026 · Zero-flash frames · f007ade | 0.184ms | 0.046ms | 0.028ms | 146 |
1.0.0اکتبر 2026 · Text.js 1.0 · 57968b6 | 0.163ms | 0.011ms | 0.000ms | 149 |
فرانتاند DevTools
bench/devtools در Chrome for Testing: ترسیمهای خالی، فریمهای تحویلشده و تأخیر نمایش، 5 ثانیه در هر اجرا. روش اندازهگیری ما.
| درایور | FPS | ترسیمهای خالی | ترسیمشده / ارسالشده | تأخیر p50 |
|---|---|---|---|---|
| افزودن به انتها (نسخه عرضهشده) | 15 | 1.0% | 74 / 75 | 10.4ms |
| پاکسازی در هر فریم | 15 | 70.6% | 70 / 75 | 60.4ms |
| افزودن به انتها، بدون تنظیم آهنگ | 60 | 0.8% | 67 / 295 | 31.2ms |
| پاکسازی در هر فریم | 60 | 81.1% | 45 / 300 | 9.8ms |
رخدادهای گذشته
جدیدترین در ابتدا. زمانها برحسب UTC هستند.
اکتبر 2026
گیر کردن صفحات زیر سربرگ در Safari روی iOS27 اکتبر – 28 اکتبر 2026 · رفعشده
- رفعشده
این رخداد برطرف شده است.
- در حال پایش
اصلاحی مستقر شده است. لنگرگذاری پیمایش غیرفعال است (
overflow-anchor: none). در حال پایش هستیم. - شناساییشده
پس از پیمایش به پایین و بازگشت به بالا، عنوان اصلی همچنان ممکن است زیر سربرگ چسبان گیر کند. لنگرگذاری پیمایش Safari موقعیت پیمایش را تنظیم میکند.
- در حال پایش
اصلاحی مستقر شده است. این عناصر اکنون فقط بهصورت افقی پیمایش میشوند و
scrollbar-gutter: stableفقط در دستگاههای دارای ماوس اعمال میشود. - شناساییشده
زبانههای فایل، بلوکهای کد و جدولهای متن بهدلیل خط زیر زبانهٔ فعال، 1px سرریز عمودی دارند؛ بنابراین در هر دو محور پیمایش میشوند و iOS حرکتهای عمودی انگشت برای پیمایش صفحه را به آنها میدهد. ویژگی
scrollbar-gutter: stableنیز باعث پرش در اولین پیمایش در iOS میشود. - در حال بررسی
در حال بررسی گزارشهایی هستیم که میگویند در iOS Safari نمیتوان صفحات textjs.org را با پیمایش به بالا برگرداند.
این رخداد بر این کامپوننتها تأثیر گذاشت: textjs.org.
تحلیل پس از رخداد
صفحات textjs.org هنگام بارگذاری جابهجا نمیشوند، پس لنگرگذاری پیمایش چیزی برای اصلاح نداشت. در iOS Safari، این قابلیت بخش اصلی را زیر سربرگ چسبان گیر میانداخت و مانع بازگشت به بالای صفحه با پیمایش میشد. اکنون
?debug=scrollدر textjs.org رویدادهای پیمایش، لمس و تغییر اندازه را زنده نمایش میدهد و فراخوانندهٔ هر فراخوانی برنامهای فوکوس یا پیمایش را مشخص میکند.اصلاحات:
297c5d7,55da525,8424fcd· گزارش تغییرات: 1.0.0- رفعشده
شکست آزمونهای قواعد لینت در CI23 اکتبر 2026 · رفعشده
- رفعشده
آزمونگر اکنون
it.onlyرا با تأخیر، زمانی که آزمونیRuleTester.itOnlyرا فراخوانی میکند، میخواند. CI با موفقیت اجرا میشود. - شناساییشده
وقتی متغیر محیطی
CIتنظیم شده باشد، Bun هنگام خواندنit.onlyخطا میدهد. آزمونگر قواعد هنگام وارد کردن، مقدارRuleTester.itOnly = it.onlyرا تخصیص میدهد، بنابراین بارگذاری آن شکست میخورد. - در حال بررسی
مجموعهآزمون
eslint-plugin-textjsدر CI پیش از اجرای هر آزمون قاعدهای شکست میخورد. اجراهای محلی موفقاند.
تحلیل پس از رخداد
@typescript-eslint/rule-testerتوابع آزمون خود را بهصورت ویژگیهای ایستایRuleTesterدریافت میکند. اصلاحیه،it.onlyرا در یک تابع میپیچد. هیچ بسته یا صفحهای تحت تأثیر قرار نگرفت.اصلاح:
eca3f78- رفعشده
جابهجایی چیدمان در /playground و /opencode21 اکتبر – 22 اکتبر 2026 · رفعشده
- رفعشده
جابهجایی تجمعی چیدمان در همهٔ مسیرها 0 است.
- در حال پایش
اصلاحی مستقر شده است. هر دو صفحه از یک چیدمان پد استفاده میکنند و اندازه بدون جابهجایی «متناسب با کنسول» به انتها افزوده میشود. در حال پایش هستیم.
- شناساییشده
کنترل اندازهٔ کنسول پس از هیدراسیون، اندازهٔ اندازهگیریشده را به انتهای برچسب خود اضافه میکند (
Fit console · 120×36)، که گره متنی «تنظیم با کنسول» را جابهجا میکند. ارتفاع ردیفهای بالا و پایین پد نیز بین دو صفحه متفاوت است، پس پد هنگام ناوبری دوباره در مرکز قرار میگیرد. - در حال بررسی
ممیزی جابهجایی چیدمان ما، جابهجایی تجمعی چیدمان 0.0001 را در /playground و /opencode گزارش میکند. مقدار گزارششده برای تمام مسیرهای دیگر تحت پوشش آن 0 است. پد فوکوس نیز هنگام جابهجایی بین این دو صفحه حرکت میکند.
این رخداد بر این کامپوننتها تأثیر گذاشت: textjs.org.
تحلیل پس از رخداد
پد اکنون جایگاههایی با ارتفاع ثابت در بالا و پایین دارد و هر دمو ردیفهای یکسانی را رزرو میکند، بنابراین تغییر صفحه یا دمو چیزی را جابهجا نمیکند. پنل اتصال OpenCode در همهٔ حالتها یک خط وضعیت نشان میدهد و تا زمان هیدراته شدن، اسکلت نمایش میدهد. اسکریپت
apps/web/scripts/e2e-layout.mjsیکسان بودن کادرها را در مسیرها، دموها، اندازههای ناحیهٔ دید و حالتهای اتصال بررسی میکند.اصلاح:
8f22b9b· گزارش تغییرات: 1.0.0- رفعشده
نام بستهٔ textjs در npm در دسترس نیست14 اکتبر – 15 اکتبر 2026 · رفعشده
- رفعشده
این رخداد برطرف شده است.
- در حال پایش
بستهٔ فریمورک و CLI اکنون
@textjs/nextاست و در همان محدودهٔ@textjs/coreو@textjs/reactقرار دارد. واردکردنها ازtextjsبه@textjs/nextتغییر میکنند. - شناساییشده
نام
textjsاز 25 مارس 2016 متعلق به بستهٔ دیگری در npm بوده است. - در حال بررسی
انتشار بستهٔ فریمورک
textjsدر npm با خطای403 Forbiddenشکست میخورد.
تحلیل پس از رخداد
از Text.js 1.0، برنامهها بهجای
textjsاز@textjs/nextوارد میکنند و پل OpenCode دستورbunx @textjs/app proxyاست که از هر دایرکتوری اجرا میشود.- رفعشده
سپتامبر 2026
لایههای رسم خالی در شکست ردیفها15 سپتامبر – 16 سپتامبر 2026 · رفعشده
- رفعشده
این رخداد برطرف شده است.
- در حال پایش
اصلاحی مستقر شده است. شکست ردیفهایی که دنبالهای را ادامه نمیدهند اکنون ابتدا
%cرا به سبکی خالی بازنشانی میکنند تا DevTools یک خط جدید ساده تولید کند. هر فریم یک پرده دارد. - شناساییشده
وقتی یک دنبالهٔ دارای سبک در شکست ردیف پایان مییابد،
\nدرون span مربوط به%cآن دنباله نوشته میشود. DevTools در شکست خط، span را تقسیم میکند و بخش خالی باقیمانده به یک span باdisplay: inline-blockوcontain: paintتبدیل میشود که لایهٔ رسم خودش را میگیرد. - در حال بررسی
در حال بررسی عناصر خالی
<span>در بیشتر شکست ردیفهای فریمهای DevTools و دو برابر شدن span پرده در برخی فریمها هستیم.
این رخداد بر این کامپوننتها تأثیر گذاشت: Turbolog encoder.
تحلیل پس از رخداد
spanهایی با سبک یکسان همچنان در دو سوی شکست ردیفها ادغام میشوند. پرده نیز به خطی جدا منتقل شد: DevTools پیوند منبع (
VM12:1) را در سمت راست خط اول پیام شناور میکند و پردهٔ درونخطی آن پیوند را کنار ردیف 0 باقی میگذاشت و عرض ردیف را کم میکرد.- رفعشده
اوت 2026
افزایش تأخیر نمایش پس از console.clear27 اوت – 31 اوت 2026 · رفعشده
- رفعشده
میانهٔ تأخیر نمایش در
bench/devtoolsبرابر با 10.4 ms است. این اصلاح در Text.js 1.0 عرضه میشود. - در حال پایش
اصلاحی مستقر شده است. پس از هر فریمی که پاکسازی میکند، رندرکننده یک بار 110 ms صبر میکند تا فریمهای بعدی بیش از 50 ms پس از تازهسازی قبلی DevTools برسند و مسیر فوری آن را طی کنند.
- شناساییشده
پس از پاکسازی، DevTools ردیف «کنسول پاک شد» را درج میکند. این ردیف جایگاه فوری محدودکننده را میگیرد و فریم بعدی را به زمانسنج 50 ms میفرستد. با فاصلهٔ 66 ms میان فریمها، همهٔ فریمهای بعدی روی همان زمانسنج میمانند.
- در حال بررسی
پس از پاک شدن کنسول،
bench/devtoolsمیانهٔ تأخیر نمایش را 63 ms گزارش میکند. تأخیر برای همهٔ فریمهای بعدی در همین سطح میماند.
این رخداد بر این کامپوننتها تأثیر گذاشت: DevTools Throttler, console.clear.
تحلیل پس از رخداد
ورودی گسسته همچنان در صورت اجازه دادن فاصلهٔ فریمها، بهصورت همگام رندر میشود.
- رفعشده
برهمخوردن تراز ردیفها با نشانگر چرخان در کنسول DevTools11 اوت – 12 اوت 2026 · رفعشده
- رفعشده
این رخداد برطرف شده است. این اصلاح در Text.js 1.0 عرضه میشود.
- در حال پایش
اصلاحی مستقر شده است. نشانگر چرخان پیشفرض
dotsاکنون بلوکهای ربعی (▘ ▝ ▗ ▖) رسم میکند که هر کدام در Menlo یک سلول هستند. فریمهای بریل باvariant="braille"برای ترمینالها در دسترساند. - شناساییشده
نشانگر چرخان پیشفرض الگوهای بریل (U+2800 تا U+28FF) را رسم میکند. Text.js هر کدام را یک سلول اندازه میگیرد، اما Menlo، قلم کنسول DevTools در macOS، نویسههای بریل ندارد. نویسهٔ جایگزین از یک سلول عریضتر است و بقیهٔ ردیف را به راست میراند.
- در حال بررسی
در macOS، ردیفهای دارای
<Spinner>در DevTools تراز نیستند. سلولهای سمت راست نشانگر چرخان خارج از شبکه قرار میگیرند.
این رخداد بر این کامپوننتها تأثیر گذاشت: console.log.
تحلیل پس از رخداد
کامپوننت
LineChartبه همین دلیل بهطور پیشفرض نقطههای ربعی رسم میکند. بریل باmarker="braille"در دسترس است.- رفعشده
مهٔ 2026
افزایش رسمهای خالی در کنسول DevTools5 مه – 19 مه 2026 · رفعشده
- رفعشده
این اصلاح در Text.js 0.4.0 منتشر شده است. رسمهای خالی به 1.0% رسیدهاند که همگی در فریم اول رخ میدهند.
- در حال پایش
textjs.org اکنون فریمها را بهجای پاکسازی به انتها میافزاید. یک span پرده با عرض صفر فریمهای قبلی را از دید خارج نگه میدارد و فریمها با فاصلهٔ دستکم 66 ms اجرا میشوند.
- شناساییشده
DevTools دستور
console.clear()را همگام اعمال میکند، اما پیامهای جدید را با محدودیت زمانی 50 ms رسم میکند. هر فریم بلافاصله فریم قبلی را حذف میکند و تا 50 ms بعد رسم میشود. درbench/devtools، داشبوردی با ابعاد 100×32 در 70.6% از رسمهای DevTools با نرخ 15 fps و 81.1% با نرخ 60 fps خالی بود. - در حال بررسی
در حال بررسی گزارشهایی از خالی شدن لحظهای کنسول DevTools میان فریمها زیر بار هستیم.
این رخداد بر این کامپوننتها تأثیر گذاشت: console.clear, DevTools Throttler.
تحلیل پس از رخداد
از نسخهٔ 0.1.0، Turbolog برای هر فریم تغییریافته یک
console.clear()و یکconsole.log()میفرستاد. ابزارbench/devtoolsکه رابط واقعی DevTools را در Chrome for Testing کنترل میکند، برای اندازهگیری این رخداد ساخته شد و اعداد جدول رابط DevTools در بالا را تولید کرد.اصلاح:
f007ade· Turbolog: حذف چشمکزدن · گزارش تغییرات: 0.4.0- رفعشده
آوریل 2026
تغییر سبک مسیر فایلها به پیوند در فریمهای کنسول14 آوریل – 15 آوریل 2026 · رفعشده
- رفعشده
این رخداد برطرف شده است.
- در حال پایش
اصلاحی مستقر شده است. رمزگذار یک word joiner (U+2060) در متن
path:line،//host:portوdata:درج میکند، مگر اینکه سلول اجازهٔ پیوند بدهد. - شناساییشده
DevTools نشانیهای اینترنتی، متن
path:lineو//host:portرا در پیامهای کنسول به پیوند تبدیل میکند و رنگهای پوستهٔ خود را به آنها تحمیل میکند. رمزگذار از قبل://وwww.را جدا میکرد، اماpath:lineو//host:portپس از طرح نشانی همچنان مطابقت دارند. - در حال بررسی
متنهایی مانند
src/app.tsx:12وhttp://localhost:3000بهجای سبک%cخود با رنگ پیوند DevTools رندر میشوند.
این رخداد بر این کامپوننتها تأثیر گذاشت: Turbolog encoder.
تحلیل پس از رخداد
متنهای
://وwww.از نسخهٔ 0.1.0 دارای word joiner بودهاند. سلولهایی که باید قابل کلیک بمانند ویژگی allow-link را تنظیم میکنند و بدون تغییر نوشته میشوند.- رفعشده
نوامبر 2025
تأخیر کلیدهای فشردهشده در برنامههای کنسول4 نوامبر – 18 نوامبر 2025 · رفعشده
- رفعشده
این اصلاح در Text.js 0.3.0 منتشر شده است.
- در حال پایش
اصلاحی مستقر شده است. ورودی گسسته، مانند فشردن کلید یا جایگذاری، اکنون بهصورت همگام در همان وظیفه رندر میشود. سایر بهروزرسانیها همچنان در
requestAnimationFrameثبت میشوند. - شناساییشده
هر بهروزرسانی، از جمله فشردن کلید، تا
requestAnimationFrameبعدی منتظر میماند تا React تغییرات را ثبت کند و فریم در گزارش نوشته شود. - در حال بررسی
تایپ در برنامههای کنسول از صفحهکلید عقب میماند؛ این مشکل در OpenCode روی textjs.org بیشتر دیده میشود.
این رخداد بر این کامپوننتها تأثیر گذاشت: textjs.org.
تحلیل پس از رخداد
فشردن کلیدها دیگر منتظر فریم بعدی انیمیشن نمیماند. کامیتهایی که از ورودی نمیآیند، مانند تایمرها و دادههای جریانی، همچنان در هر فریم انیمیشن دستهبندی میشوند.
اصلاح:
8c2d1b1· تغییرات: 0.3.0- رفعشده