Text.js میں نیا کیا ہے
Text.js کی تمام قابل ذکر تبدیلیاں اس فائل میں درج ہیں۔
اضافے
- textjs.org: ہسپانوی، فرانسیسی، جرمن، برازیلی پرتگالی، کوریائی، اور آسان اور روایتی چینی اب textjs.org/es، /fr، /de، /pt-br، /ko، /zh-cn اور /zh-tw پر مسودے سے نکل چکی ہیں۔ فوٹر کا زبان چننے والا کنٹرول اور براؤزر کی زبان والا بٹن انہیں بھی جاپانی کی طرح پیش کرتے ہیں۔ سرچ انجن ترجمہ شدہ صفحات کو انڈیکس کرتے ہیں اور ہر ایک کو اس کے انگریزی ورژن سے ملاتے ہیں۔
- textjs.org: اطالوی، روسی، ترکی، پولش، انڈونیشیائی، ویتنامی اور ہندی اب textjs.org/it، /ru، /tr، /pl، /id، /vi اور /hi پر مسودے سے نکل چکی ہیں۔ فوٹر کا زبان چننے والا کنٹرول اور براؤزر کی زبان والا بٹن انہیں بھی دوسری زبانوں کی طرح پیش کرتے ہیں۔ سرچ انجن ترجمہ شدہ صفحات کو انڈیکس کرتے ہیں اور ہر ایک کو اس کے انگریزی ورژن سے ملاتے ہیں۔
- textjs.org: عربی، عبرانی، فارسی اور اردو اب textjs.org/ar، /he، /fa اور /ur پر مسودے سے نکل چکی ہیں۔ فوٹر کا زبان چننے والا کنٹرول اور براؤزر کی زبان والا بٹن انہیں بھی دوسری زبانوں کی طرح پیش کرتے ہیں۔ سرچ انجن ترجمہ شدہ صفحات کو انڈیکس کرتے ہیں اور ہر ایک کو اس کے انگریزی ورژن سے ملاتے ہیں۔
تبدیلیاں
@textjs/react:<FocusPad>اور<ViewportControl>اپنے مونو اسپیس لیبلز کے لیے صفحے کا--monoفونٹ اسٹیک استعمال کرتے ہیں، اگر صفحے نے اسے متعین کیا ہو، اور ورنہ پہلے کی طرح Geist Mono استعمال کرتے ہیں۔ عربی یا عبرانی لیبلز والا صفحہ اپنے رسم الخط کے فونٹس--monoمیں شامل کر سکتا ہے۔
اصلاحات
- textjs.org: فون پر، لائن سے لمبا اِن لائن کوڈ صفحے کی چوڑائی بڑھانے کے بجائے اگلی لائن پر آ جاتا ہے۔ textjs.org/docs/internationalization کی چوڑائی 390 px کی اسکرین پر 92 px زیادہ تھی۔
اضافے
@textjs/react: ترجمہ شدہ سائٹس کے لیے<FocusPad messages>پیڈ کی کسی بھی بلٹ اِن اسٹرنگ کو بدلتا ہے۔ اس میں ہر سطر، اسکرین ریڈر کے لیبل اور کونسول کے سائز کا کنٹرول شامل ہیں۔<TextCanvas>اور<ViewportControl>بھیmessagesلیتے ہیں۔<ViewportControl>صرف سائز کنٹرول کی کیز استعمال کرتا ہے۔ ویلیو والی اسٹرنگز، مثلاً “پھر یہاں کلک کریں اور ↑ ↓ دبائیں۔”، ایسے فنکشن ہیں جو پورا جملہ لوٹاتے ہیں۔defaultFocusPadMessagesمیں انگریزی متن ہے۔ فوکس پیڈ کا ترجمہ دیکھیں۔@textjs/react: دائیں سے بائیں صفحات پر، فوکس پیڈ ⌘ ⌥ J جیسے کی کیپس اور 120×36 جیسے کونسول سائز بائیں سے دائیں رکھتا ہے، اور اپنے سائز کنٹرول اور اسٹیپ بار کو الٹ دیتا ہے۔ چینی اور جاپانی صفحات پر یہ اپنے دو جملوں کے درمیان اسپیس ہٹا دیتا ہے؛ کوریائی میں اسے برقرار رکھتا ہے۔- textjs.org: textjs.org/ja مسودے سے نکل چکا ہے۔ فوٹر کا زبان چننے والا کنٹرول وہی صفحہ انگریزی یا جاپانی میں کھولتا ہے۔ جاپانی پر سیٹ براؤزر کو جاپانی میں پڑھنے کا بٹن ملتا ہے، اور textjs.org/ja پر انگریزی براؤزر کو انگریزی میں پڑھنے کا بٹن ملتا ہے۔ آپ کے زبان چننے یا بٹن بند کرنے کے بعد وہ دوبارہ ظاہر نہیں ہوتا۔ سرچ انجن ترجمہ شدہ جاپانی صفحات کو انڈیکس کرتے ہیں اور ہر ایک کو اس کے انگریزی ورژن سے ملاتے ہیں۔
- textjs.org: textjs.org/ja پر ہر صفحے کا فوکس پیڈ جاپانی میں ہے، جس میں ہر ڈیمو کی کیز کے نیچے کے لیبل بھی شامل ہیں۔
تبدیلیاں
@textjs/core: Chromium اور Firefox کونسول اینیمیٹڈ اسپرائٹ آؤٹ پٹ کو 4 MB کے بجائے 16 MB پر صاف کرتے ہیں، اس لیے textjs.org/doom پر “کونسول صاف کر دیا گیا” ہر 4.5 سیکنڈ کے بجائے تقریباً ہر 19 سیکنڈ بعد دکھتا ہے۔ Safari، اور▀ہاف بلاکس کے طور پر بنائے گئے اسپرائٹس، 4 MB برقرار رکھتے ہیں۔ textjs.org/doom پر صفحے کی زیادہ سے زیادہ ہیپ 10.8 MB سے تقریباً 12–13 MB ہو جاتی ہے۔- textjs.org: دستاویزات کا صفحہ تمام 33 صفحات کے بجائے صرف اپنا Markdown ڈاؤن لوڈ کرتا ہے، اس لیے انگریزی دستاویزات کے صفحات 43–47 KB کم JavaScript (gzip) اور /ja دستاویزات کے صفحات 60–64 KB کم لوڈ کرتے ہیں۔ دستاویزات کے دوسرے صفحے کے لنک پر ہوور کرنے یا فوکس کرنے سے وہ صفحہ پہلے ہی حاصل ہو جاتا ہے، اس لیے وہ اب بھی فوراً کھلتا ہے۔
اصلاحات
- textjs.org/ja: ⌘K سرچ جاپانی دستاویزات کی سرخیاں دکھاتی ہے اور جاپانی کوئریز کو ان سے ملاتی ہے۔ پہلے یہ جاپانی صفحوں کے عنوانات کے نیچے انگریزی سرخیاں دکھاتی تھی۔ انگریزی نام اب بھی صفحات تلاش کرتے ہیں:
routingسے ルーティング اورopen the consoleسے コンソールを開く ملتا ہے۔ - textjs.org: آپ کے کونسول میں چلتی دستاویزات کی مثال اب textjs.org/ja پر، اور textjs.org/docs/internationalization پر دوطرفہ متن کی مثال کے لیے، اپنی تبدیلیاں دوبارہ صفحے کے پری ویو میں دکھاتی ہے۔ کونسول میں مثال کے اوپر کی سطر اب “▼ دستاویزات › تعارف › کاؤنٹر” کے بجائے “▼ دستاویزات › کاؤنٹر” ہے۔
اضافے
- textjs.org/doom، Doom کے اپنے اسٹیریو پیننگ اور فاصلے کے ساتھ آواز میں کمی کے ساتھ، Doom کے ساؤنڈ ایفیکٹس چلاتا ہے۔ آواز صفحے پر آپ کے پہلے کلک یا کی دبانے سے شروع ہوتی ہے، گیم کے ساتھ رکتی ہے، اور Doom کے اختیارات → آواز کا والیوم مینو میں Sfx والیوم کی پیروی کرتی ہے۔ موسیقی نہیں ہے۔
تبدیلیاں
@textjs/react،@textjs/app: فوکس کا اشارہ (“کی بورڈ استعمال کرنے کے لیے صفحے پر کلک کریں”) ہر تھیم میں موٹے سیاہ متن والی عنبری بار ہے۔ پہلے اس میں تھیم کے رنگ الٹ جاتے تھے۔ ہر بار ظاہر ہونے پر یہ تقریباً 6 سیکنڈ میں 4 بار جھپکتی ہے، پھر عنبری رہتی ہے۔ کم حرکت کا آپشن آن ہو تو یہ نہیں جھپکتی۔ جھپکنے کا ہر چکر کونسول میں 8 تک اضافی فریم لاگ کرتا ہے۔- textjs.org: Doom کو textjs.org/doom پر منتقل کر دیا گیا۔ textjs.org/playground/doom وہاں ری ڈائریکٹ کرتا ہے۔
اصلاحات
@textjs/core،@textjs/react: Chrome کا مسائل پینل اب ہر صفحے پر “فارم فیلڈ ایلیمنٹ میں id یا name ایٹریبیوٹ ہونا چاہیے” رپورٹ نہیں کرتا۔ کی بورڈ کے پوشیدہ<textarea>کا نامtextjs-inputہے، اورViewportControlکے کونسول سائز والے<select>میں (FocusPadکےsizeControlمیں بھی) ایکidاور نامtextjs-console-sizeہے۔ کی بورڈ کا<textarea>بھی 1Password، LastPass، Bitwarden اور Dashlane سے الگ رہتا ہے۔- textjs.org: textjs.org/doom پر کونسول ہیڈر “Text.js / playground / doom” کے بجائے “Text.js / doom” ہے۔
- textjs.org/doom: تنگ ونڈو میں اب “سورس دیکھیں” کے بعد غیر ضروری “·” نہیں رہتا۔
- textjs.org: تنگ ونڈو میں، Playground کا ڈیمو چننے والا کنٹرول آخری ڈیمو کا لفظ درمیان سے کاٹنے کے بجائے اس کنارے پر مدھم ہوتا ہے جہاں اسکرول کرنے کے لیے مزید ڈیموز ہوں۔
- textjs.org/doom، Doom کے 35 ٹکس فی سیکنڈ پر چلتا ہے۔ لیول میں یہ 60 Hz ڈسپلے پر 3.8× تیز (131 ٹکس فی سیکنڈ) اور 120 Hz پر 5.5× تیز (192) چلتا تھا، کیونکہ صفحہ لیول بناتے وقت Doom کی گھڑی کی اضافی ریڈنگز کو بزی ویٹ سمجھتا تھا، اور ہر اینیمیشن فریم اور ٹائمر کال بیک پر Doom کی گھڑی ایک ٹک آگے کر دیتا تھا۔
اضافے
@textjs/react:<Image renderMode="halfblock">ہر جگہ▀ہاف بلاکس بناتا ہے، جیسے 1.3 میں<Image>بناتا تھا۔@textjs/core/experimental:drawPixelsنرم الفا اور 256 سے زیادہ رنگوں والے لاس لیس اسپرائٹ کے لیےencoding: "rgba"لیتا ہے، اور ایکfallbackفنکشن جو جہاں اسپرائٹ نہیں دکھایا جا سکتا وہاں سیل پینٹ کرتا ہے۔@textjs/app:text dev،text startاورbun،vercelاورcloudflareاڈاپٹرز پر curl، Wget، HTTPie اور xh کو HTML صفحے کے بجائے صفحے کا پہلا فریم ٹرو کلر ANSI متن کے طور پر ملتا ہے۔text buildاسٹیٹک صفحات کے فریموں کی پری رینڈرنگ کرتا ہے۔text startاورbunدرخواست پر ڈائنامک اور سرور پر رینڈر شدہ صفحات رینڈر کرتے ہیں، اور نامعلوم پاتھ کا جواب ایپ کے صفحہ نہیں ملا والے صفحے اور404سے دیتے ہیں۔ فریم ڈیفالٹ طور پر 80 × 24 ہوتے ہیں۔ سائز بدلنے یا فریم بند کرنے کے لیےtext.config.tsمیںansiیا صفحے میںexport const ansiاستعمال کریں۔staticاڈاپٹر curl کو HTML صفحہ دیتا ہے۔ curl اور ٹرمینل کلائنٹس دیکھیں۔@textjs/app/ansiان سرورز کے لیےwantsAnsiاورansiResponseایکسپورٹ کرتا ہے جوtext startیا اڈاپٹر استعمال نہیں کرتے، اور@textjs/react،frameToAnsiایکسپورٹ کرتا ہے۔- textjs.org: textjs.org/ja پر جاپانی ورژن کا مسودہ، جس کی شروعات تعارف، انسٹالیشن اور روٹنگ کی دستاویزات اور سائٹ انٹرفیس سے ہوتی ہے۔ غیر ترجمہ شدہ پیراگراف انگریزی میں دکھتے ہیں۔ یہ ابھی انڈیکس نہیں ہوتا اور زبان چننے والے کنٹرول میں دستیاب نہیں ہے۔
تبدیلیاں
@textjs/react:<Image>اب Chromium اور Firefox کونسول میں پکسل اسپرائٹ بناتا ہے، پکسل آرٹ کے لیے فی سیل 8 × 16 پکسل تک اور تصاویر کے لیے 4 × 8 تک۔ یہ جان بوجھ کر سپورٹ پالیسی کے اس وعدے کو توڑتا ہے کہ معمولی ریلیزز کے درمیان فریم ایک جیسے دکھیں گے۔ 1.3 کے ہاف بلاکس برقرار رکھنے کے لیےrenderMode="halfblock"پاس کریں۔ Safari، ٹرمینلز (text runسمیت)، ANSI اور سادہ متن کا آؤٹ پٹ، اور سرور پر رینڈر شدہ صفحات (runtime = "server") اب بھی ہاف بلاکس بناتے ہیں۔@textjs/app: curl، Wget، HTTPie یا xh سے صفحات حاصل کرنے والے اسکرپٹس اور اپ ٹائم چیکس کو اب ANSI متن ملتا ہے۔ HTML حاصل کرتے رہنے کے لیےAccept: text/htmlبھیجیں، یاtext.config.tsمیںansi: falseسیٹ کریں۔@textjs/app: جبtext buildصفحے کے شیل کی پری رینڈرنگ کرتا ہے تو async سرور کمپوننٹس اب نہیں چلتے۔ وہ بلڈ کے وقت ڈیٹا کی درخواستیں شروع کیے بغیر، پہلے کی طرح اپنا<Suspense>فال بیک دکھاتے ہیں۔@textjs/app: سرور پر رینڈر شدہ صفحات کا فریم پلیئر 3 KB چھوٹا ہے،examples/dashboardکے لیے 25.4 KB کے بجائے 22.4 KB gzip۔ اس میں ابCellBufferکے ڈرائنگ میتھڈز، باکس بارڈرز یا متن کاٹنے کا کوڈ شامل نہیں ہوتا۔
اصلاحات
@textjs/core: چارٹس اور اسپنرز Windows 10 پر اپنی گرڈ برقرار رکھتے ہیں۔ اس کا کونسول فونٹ Consolas ہے، جس میں ▁▂▃▅▆▇ آٹھویں حصے والے بلاکس، کواڈرینٹس، بریل، ▶ یا ✓ نہیں ہیں، اور ان کے فال بیک گلف سطروں کو فریم کے دائیں کنارے سے باہر لے جاتے تھے۔CssConsoleDriverاب ایک بار ناپتا ہے کہ کونسول فونٹ ان میں سے کون سے گلف سیل کے پانچویں حصے سے زیادہ ہٹا کر بناتا ہے، اور انہیں Consolas کے قریب ترین گلف سے بناتا ہے: آٹھویں حصوں کے لیے_▄▌█، کواڈرینٹس اور بریل کے لیے ہاف بلاکس، تیروں، چیکس اور کراسز کے لیے►◄√×۔ انہیں درست بٹھانے والے فونٹس، مثلاً Windows 11 پر Cascadia Mono اور macOS پر Menlo، اصل گلف بناتے ہیں۔measureText: falseاسے بند کرتا ہے۔@textjs/core: Chrome اور Edge DevTools میں پڑوسی بیک گراؤنڈز کے درمیان اب 1 px کی عمودی باریک لکیریں نہیں ہیں، مثلاً textjs.org/coffee میں “اکاؤنٹ” اور “مقدار” کے ساتھ۔ Chromium ہر%cspan کو الگ سے ڈیوائس پکسلز پر بٹھاتا ہے اور دو spans کے ملنے والا پکسل دونوں سے باہر چھوڑ سکتا تھا۔CssConsoleDriverاب span کا بیک گراؤنڈ دائیں طرف کے غیر شفاف پڑوسی کے نیچے 1 px بڑھاتا ہے (padding-right:1px;margin-right:-1px)۔ Firefox اور Safari کے فریم نہیں بدلتے۔@textjs/core: Chrome اور Edge میں<Image>اسپرائٹس متن کی طرح 1 px کے اسی اصول پر چلتے ہیں۔ شفاف اسپرائٹ کے بائیں طرف کا متن اب اسپرائٹ کے بائیں کنارے پر اپنے بیک گراؤنڈ کی 1 px پٹی پینٹ نہیں کرتا، اور اسپرائٹ اپنے دائیں طرف کے غیر شفاف متن، بشمول الٹے رنگوں والے متن، سے جڑتا ہے۔ اپنی سطروں میں اکیلا اسپرائٹ اب اوپر اور نیچے کی متن والی سطروں کی طرح فریم کے دائیں کنارے تک پہنچتا ہے۔@textjs/react:<ConsoleMirror>متن کے ساتھ تصویر کو تصویر کے طور پر دکھانے کے بجائے کونسول کی طرح ہاف بلاکس سے بناتا ہے۔
اضافے
@textjs/react/experimentalلائیو فریم بفرز کے لیے<Pixels>اور دبا کر رکھی گئی کیز کے لیےuseKeyStateایکسپورٹ کرتا ہے؛@textjs/core/experimental،drawPixelsایکسپورٹ کرتا ہے۔ یہ معمولی ریلیز میں بدل سکتے ہیں۔- textjs.org/playground/doom: DevTools کونسول میں Doom کا شیئر ویئر ایپیسوڈ کھیلیں۔
@textjs/react،@textjs/app: جب صفحے پر فوکس نہ ہو، کونسول فریم کی آخری سطر پر “کی بورڈ استعمال کرنے کے لیے صفحے پر کلک کریں” آتا ہے، تاکہ کونسول میں ایپ پر کلک کرنے والا وزیٹر جان سکے کہ کیز نے کام کیوں چھوڑا۔ یہ صرف براؤزر کونسول میں تب دکھتا ہے جب ایپ میںuseInputیاusePasteہینڈلر یا فوکس ٹارگٹ ہو، بشمول سرور پر رینڈر شدہ روٹس۔ اِن لائن مررز اور VS Code پری ویو اسے نہیں دکھاتے۔ اسے بند کرنے کے لیےtext.config.tsیاcreateConsoleRootمیںfocusHint: falseاستعمال کریں۔@textjs/react:usePageFocus()لوٹاتا ہے کہ صفحے پر فوکس ہے یا نہیں۔ ایپ کو کی بورڈ کب چاہیے یہ خود طے کرنے کے لیےfocusHint: falseسیٹ کریں اور<FocusHint active={…}>رینڈر کریں۔useInput(handler, { ambient: true })ایک ہمیشہ فعال شارٹ کٹ کو نشان زد کرتا ہے جو خود اشارہ نہیں دکھاتا۔
تبدیلیاں
@textjs/core: جب<Pixels>اسپرائٹ اینیمیٹ ہوتا ہے،ConsoleRenderer، Chromium میں ہر 51 ms پر کی فریم بیچ کرتا ہے، Safari میں فریموں کا وقفہ 33 ms رکھتا ہے، اورCssConsoleDriverمیں آخر میں جوڑا گیا آؤٹ پٹ 4 MB (SPRITE_MAX_BYTES) پر صاف کرتا ہے۔ اسٹیٹک اسپرائٹس اور صرف متن والی ایپس موجودہ رفتار اور 300 فریم پر صفائی کی حد برقرار رکھتی ہیں۔
اضافے
@textjs/core:bindTextSink(element, onText)پوشیدہ textarea یا input سے IME یا ڈیڈ کی کا مکمل کردہ متن پڑھتا ہے، ہر تکمیل پر ایک بار اور کبھی تشکیل کے دوران نہیں۔engine.bindTextSink(element)آپ کے رینڈر کردہ textarea کوInputEngineسے جوڑتا ہے۔ دونوں ایسا فنکشن لوٹاتے ہیں جو لسنرز ہٹاتا ہے۔@textjs/app:POST /__textjs/input، IME اور ڈیڈ کی متن کے لیے{ type: "text", text }قبول کرتا ہے۔@textjs/app/frame-protocolمیںInputMessageاورparseInputMessageاسے شامل کرتے ہیں۔
تبدیلیاں
@textjs/app: مڈل ویئر اور روٹ ہینڈلرز کو کینونیکل پاتھ ملتا ہے۔/docs/اور/docs//intro،/docsاور/docs/introکے طور پر پہنچتے ہیں، اس لیے آخری سلیش شامل کرنے کے لیے ری ڈائریکٹ کرنے والا مڈل ویئر اب مسلسل ری ڈائریکٹ کرتا رہتا ہے۔ وہ ری ڈائریکٹ ہٹائیں۔ ڈائنامک سیگمنٹ میں انکوڈ شدہ سلیش نہیں ہو سکتا:/files/a%2Fb،400لوٹاتا ہے۔@textjs/app: مڈل ویئر کے ساتھ--adapter cloudflareہر درخواست ورکر کو بھیجتا ہے، بشمول ہیش شدہ اثاثے، اورbasePathکے ساتھ یہ بیس پاتھ سے باہر کی درخواستیں بھی بھیجتا ہے۔ ورکر چلانے والی ہر درخواست ایک Functions انووکیشن ہے اور آپ کے Workers درخواست کوٹے میں شمار ہوتی ہے۔ Workers Free پلان پر Pages پروجیکٹ کو بند ہو کر ناکام ہونے پر سیٹ کریں (ترتیبات → رن ٹائم → کھل کر / بند ہو کر ناکامی)، ورنہ روزانہ کوٹا ختم ہونے پر Pages آپ کی فائلیں مڈل ویئر کے بغیر پیش کرتا ہے۔
اصلاحات
- چینی، جاپانی اور کوریائی IMEs اور ڈیڈ کیز textjs.org کے اِن لائن کونسولز میں کام کرتے ہیں۔ کونسولز تشکیل کے دوران textarea صاف کر دیتے تھے، اس لیے ایپ کو خام حروف یا غلط حرف ملتا تھا۔
<FocusPad>کلک کے بعد کی بورڈ فوکس ایپ پر رکھتا ہے۔ پہلے یہ فوراً فوکس ہٹا دیتا تھا، اس لیے چینی، جاپانی اور کوریائی IMEs متن تشکیل نہیں دے سکتے تھے۔- تشکیل نہ کرنے والی ڈیڈ کیز (Windows، اور IME کے بغیر Linux) پوشیدہ textarea پر فوکس ہونے پر ایپ تک پہنچتی ہیں۔ US-International پر
'پھرeسےéاور'پھرtسے'tملتا ہے۔InputEngineڈیڈ کی مکمل کرنے والا keydown روک دیتا تھا، اس لیے براؤزر کچھ داخل نہیں کرتا تھا۔@textjs/coreمیںDeadKeyTrackerاس keydown کو گزرنے دیتا ہے، اور VS Code پری ویو بھی اسے استعمال کرتا ہے۔ - VS Code پری ویو IME اور ڈیڈ کی متن پہنچاتا ہے جسے یہ پہلے چھوڑ دیتا تھا، اور اب ڈیڈ کیز یا IME تشکیل کے کی اسٹروکس ایپ کو آگے نہیں بھیجتا۔
@textjs/app1.1.0 یا اس سے پہلے کےtext devسرور کے ساتھ یہ متن کی پریسز یا پیسٹ کے طور پر بھیجتا ہے۔ @textjs/core: جبshouldCapture،falseلوٹاتا ہے توInputEngine.handleTextInputمتن نظر انداز کرتا ہے، جیسا کی اور پیسٹ ان پٹ پہلے ہی کرتے تھے۔text dev،@textjs/app/live-stubاور@textjs/app/live-playerکو پہلے سے بنڈل کرتا ہے۔runtime = "server"صفحے والی ایپ انہیں پہلے صفحہ لوڈ کے بعد ہی ڈھونڈتی تھی، اس لیے Vite لوڈ کے دوران انہیں دوبارہ بنڈل کرتا تھا، جس سے پرانے چنکس کے لیے 404 اور React کی دو کاپیوں سے “غلط ہک کال” آتی تھی۔- Windows پر چارٹس اور اسپنرز فریم میں سما جاتے ہیں۔ Consolas میں ▁▂▃▅▆▇ بلاکس، کواڈرینٹس، بریل، ▶ یا ✓ نہیں ہیں، اس لیے Windows انہیں 1.8 سیل تک چوڑے فال بیک فونٹس میں بناتا تھا اور چارٹ کی سطریں فریم کے دائیں کنارے سے باہر نکل جاتی تھیں۔ کونسول فونٹ اسٹیک اب
"SF Mono",Menlo,"Cascadia Mono",Consolas,monospaceہے، اور Windows 11 پورا فریم Cascadia Mono میں بناتا ہے۔<ConsoleMirror>، VS Code پری ویو اور DevTools ایکسٹینشن کا فریم ویو بھی Cascadia Mono کو Consolas سے پہلے رکھتے ہیں۔ @textjs/opencode: Windows پر Node کے تحت برجnpm i -g opencode-aiسے انسٹال کردہ OpenCode ڈھونڈ لیتا ہے۔ Node، npm کیopencode.cmdشِم کو نام سے شروع نہیں کر سکتا، اس لیے برج ایسے برتاؤ کرتا تھا جیسے OpenCode انسٹال نہ ہو۔ اب یہ ہرPATHEXTایکسٹینشن کے ساتھPATHتلاش کرتا ہے اور.cmdشِمز کوcmd.exeسے چلاتا ہے۔ Bun (bunx) کے تحت یہ پہلے ہی کام کرتا تھا۔text build، Windows پر کام کرتا ہے۔ یہ ہر ٹیمپلیٹ کے لیےCould not resolve entry module "virtual:textjs/api"کے ساتھ یا کسی ایرر پیغام کے بغیر ناکام ہوتا تھا۔- کونسول شیلز کی پری رینڈرنگ یا سرور پر رینڈر شدہ روٹس کی بلڈ ناکام ہو تو
text buildایرر پرنٹ کرتا ہے۔ پہلے یہ Vite کی “بلڈ ناکام ہوئی” سطر کے بعد وجہ بتائے بغیر کوڈ 1 کے ساتھ بند ہو جاتا تھا۔ - Windows پر
text devفائل میں ترمیم پر سرور پر رینڈر شدہ روٹس دوبارہ رینڈر کرتا ہے، اور صفحے کاruntimeایکسپورٹ بدلنے پر براؤزر دوبارہ لوڈ کرتا ہے۔ - Windows پر
text devاب Vite کی ماڈیولز کے طور پر پیش کردہ سورس فائلوں، مثلاً/app/page.tsx، کے لیےmiddleware.tsنہیں چلاتا، اس لیے تصدیق کا ری ڈائریکٹ اب ڈیولپمنٹ کلائنٹ نہیں توڑتا۔ - پروجیکٹ پاتھ میں Windows 8.3 کا مختصر نام، مثلاً
C:\Users\RUNNER~1، ہو توtext runاورtext mcpکام کرتے ہیں۔ یہ “ایپلیکیشن ایرر” دکھاتے تھے کیونکہ CLI اور ایپ@textjs/appدو بار لوڈ کرتے تھے۔ - Windows پر بلڈ کردہ
dist/، Linux اور macOS پر اپنے پری رینڈر شدہ صفحات پیش کرتا ہے۔ لائیو روٹ مینی فیسٹ اپنے پاتھ بیک سلیش کے ساتھ محفوظ کرتا تھا۔ - جب
text.config.tsمیںviteآپشنbuild.rollupOptions.inputسیٹ کرے توtext buildکام کرتا ہے۔ ان پٹ API، سرور پر رینڈر شدہ روٹ اور اڈاپٹر بنڈلز کی انٹریز بدل دیتا تھا، اور بلڈ ناکام ہو جاتی تھی۔ - صفحہ لوڈ ہونے کے پہلے چند سیکنڈ میں آپ
text devروکیں تو یہ بند ہو جاتا ہے، اورserver.close()مکمل ہوتا ہے۔ نئی دریافت شدہ ڈیپینڈنسیز کی آپٹیمائزیشن کے دوران Vite کو بند کرنا کبھی مکمل نہیں ہوتا تھا (vitejs/vite#22934)۔
سیکیورٹی
@textjs/app1.1.0 اور اس سے پہلے کے ورژن درخواست کو محفوظ پاتھ کسی اور طرح لکھ کر، مثلاً/ad%6din،/api//adminیا/admin%2Fx،middleware.tsسے بچنے دیتے تھے۔ مڈل ویئر پاتھ کو بھیجی گئی شکل میں ملاتا تھا، جبکہ صفحات، روٹ ہینڈلرز اور اسٹیٹک فائلیں اسے ڈی کوڈ کرنے کے بعد تلاش ہوتی تھیں (روٹ ہینڈلرز کے لیے دو بار)۔ اس سےtext dev،text startاور--adapter bun،vercelاورcloudflareبلڈز متاثر تھیں۔ اسٹیٹک بلڈز مڈل ویئر استعمال نہیں کر سکتیں اور متاثر نہیں ہیں۔ 1.2.0 پر اپ گریڈ کریں، پھر دوبارہ بلڈ اور ڈیپلائے کریں: Vercel کے لیے.vercel/output، Cloudflare Pages کے لیےdist/، اور Bun کے لیے پوراdist/(سرور دوبارہ شروع کریں)۔ پرانی ڈیپلائمنٹس جو اب بھی اپنے URLs پر قابل رسائی ہیں حذف کریں، یا انہیں محفوظ کریں۔- ہر ہوسٹ اب فی درخواست ایک کینونیکل پاتھ نیم طے کرتا ہے اور اسے میچر،
request.nextUrlاور ہر تلاش کے لیے استعمال کرتا ہے۔ یہ پرسنٹ ایسکیپس ڈی کوڈ کرتا ہے اور پاتھ دوبارہ اسی طرح انکوڈ کرتا ہے جیسےnew URL()لکھتا ہے،.اور..سیگمنٹس حل کرتا ہے، اور دہرائے گئے اور آخری سلیش ہٹاتا ہے۔%2F،%5Cیا غلط پرسنٹ انکوڈنگ والے پاتھ کو400ملتا ہے۔text dev،text startاور Bun اڈاپٹر اسٹیٹک فائلیں صرف ان کے عین نام پر پیش کرتے ہیں، اس لیے macOS اور Windows پر/ADMIN/report.txtابpublic/admin/report.txtپیش نہیں کرتا۔ - میچرز، ری رائٹ سورسز، روٹ سیگمنٹس اور
basePathکا موازنہ درخواست کے پاتھ کی اسی انکوڈ شدہ شکل میں ہوتا ہے، اس لیےmatcher: "/café/:path*"اور"/caf%c3%a9/:path*"،/caf%C3%A9کی حفاظت کرتے ہیں، اور"/ops%40corp/:path*"،/ops@corpکی حفاظت کرتا ہے۔ میچر کے بغیر مڈل ویئرbasePathسے باہر نہیں چلتا۔ آخری سلیش والا میچر، مثلاً/admin/،/adminسے ملتا ہے، اورhostشرط ہوسٹ کے نام کے آخر کا نقطہ نظر انداز کرتی ہے۔ runtime = "server"روٹ کا لائیو سیشن وہ صفحہ رینڈر نہیں کرتا جسے مڈل ویئر نے دوسرے پاتھ یا کوئری پر ری رائٹ کیا ہو، مثلاً/restrictedسے/login، یا جس کا جوابNextResponse.next({ status: 403 })جیسے ایرر اسٹیٹس سے دیا ہو۔--adapter vercel: روٹ ہینڈلر فنکشن کو پاتھ درخواست کے ایسے ہیڈر میں ملتا ہے جسے صرف جنریٹ شدہ روٹس سیٹ کرتے ہیں، اس لیے/api/x/%252e%252e/adminاب/api/adminتک نہیں پہنچتا، اور/_textjs/*کی کوئی شکل فنکشن نہیں چلاتی۔ جنریٹ شدہ روٹس بڑے اور چھوٹے حروف کے فرق سے ملتے ہیں، اس لیے/LEGACY/xاب/legacy/:path*کے اس ری رائٹ تک نہیں پہنچتا جسے مڈل ویئر نے کبھی چیک نہیں کیا۔ ہر پاتھ جو شاید کینونیکل نہ ہو، بشمول{جیسے خام حروف، ایج مڈل ویئر سے گزرتا ہے، جو اب ہر Vercel بلڈ کے ساتھ آتا ہے اور درخواست کو اس کے کینونیکل پاتھ پر ری رائٹ کرتا ہے۔--adapter cloudflare: اسٹیٹک فائلیں انکوڈ شدہ پاتھ سے تلاش ہوتی ہیں، اس لیے/x/%252e%252e/admin/report.txtاب/admin/report.txtپیش نہیں کرتا۔basePathکے ساتھ اس سے باہر کی فائلیں اب ورکر کے بغیر پیش نہیں ہوتیں۔text devابpublic/فائلیں/public/…یا/@fs/…کے تحت، صرف سرور کے سورسز جیسےmiddleware.tsاورtext.config.tsکو حروف کی دوسری کیس میں، انکوڈ شدہ/@fs/پاتھ کے تحت، بغیر ایکسٹینشن ماڈیول درخواستوں (/text.config?import) کے طور پر یا کنفگ ری رائٹ سے، یا روٹ ہینڈلرز کوbasePathسے باہر پیش نہیں کرتا۔
اضافے
- Text.js، Firefox اور Safari کونسولز میں رینڈر کرتا ہے۔
CssConsoleDriver، CSS فیچر چیکس سے براؤزر پہچانتا ہے۔ جہاں%cspans اِن لائن رہتے ہیں، وہاں یہ مارجن کے بغیر 14 px لائن ہائٹ لکھتا ہے، سافٹ ریپنگ بند کرتا ہے اورline-height: 100vhپردہ استعمال کرتا ہے۔ - ریسپانسیو سائزنگ Firefox کے سورس لنک کالم کے لیے جگہ چھوڑتی ہے۔ Safari فونٹ اسٹیک میں Menlo پہلے رکھتا ہے: اس کے صفحات صارف کا انسٹال کردہ SF Mono استعمال نہیں کر سکتے، جس سے Web Inspector متن بنا سکتا ہے۔
- کونسول چننے کے لیے
createConsoleRoot،ConsoleRendererیاCssConsoleDriverکوbrowser: "chromium" | "firefox" | "safari"پاس کریں۔ - پری رینڈر شدہ شیلز میں دونوں طرح کے کونسول کی CSS ہوتی ہے۔
<FocusPad>وزیٹر کے براؤزر کا کونسول شارٹ کٹ دکھاتا ہے: Firefox میں ⌘⌥K یا Ctrl+Shift+K، اور Safari میں ⌘⌥C کے ساتھ “ویب ڈیولپرز کے لیے فیچرز دکھائیں” آن کرنے کی ہدایت۔- پری رینڈر شدہ
<FocusPad>ہر براؤزر کا شارٹ کٹ رینڈر کرتا ہے۔ صرف وزیٹر کا شارٹ کٹ دکھانے کے لیے پہلے پینٹ سے قبل<html>پرdata-browser(firefoxیاsafari) اورdata-os(mac) سیٹ کریں؛ ان کے بغیر یہ ہائیڈریٹ ہونے تک Chrome کا Windows اور Linux شارٹ کٹ دکھاتا ہے۔
اصلاحات
- ⌘⌥K اور Ctrl+Shift+K (Firefox کا کونسول شارٹ کٹ) ایپ تک پہنچنے کے بجائے براؤزر تک جاتے ہیں۔
- DevTools بند ہونے پر ریسپانسیو سائزنگ 60 px سے کم اونچی براؤزر ٹول بارز (Safari اور Firefox کی) کی اونچائی سیکھتی ہے، تاکہ نیچے ڈاک شدہ کونسول کو ہر سما جانے والی سطر ملے۔
<FocusPad>سیکھی گئی اونچائی سے طے کرتا ہے کہ DevTools ڈاک ہے یا نہیں۔ <FocusPad>اپنی کلک اسٹیٹ میں Windows اور Linux شارٹ کٹس کوCtrl+Shift+Jلکھتا ہے۔
سیکیورٹی
@textjs/opencode: برج شروع ہوتے وقت پیئرنگ کوڈ پرنٹ کرتا ہے، اور textjs.org/opencode پہلے کنکشن پر اسے مانگتا ہے۔ جب تک صفحہ کوڈ نہ بھیجے، برج428جواب دیتا ہے اور OpenCode کو کچھ آگے نہیں بھیجتا، حتیٰ کہ اجازت یافتہ اوریجنز کے لیے بھی۔ ہر کوڈ برج کے ایک رن کے لیے درست ہے، اس کا لوٹایا ٹوکن صرف پیئر ہونے والے اوریجن سے کام کرتا ہے، اور دس غلط کوڈز برج دوبارہ شروع ہونے تک پیئرنگ لاک کر دیتے ہیں۔@textjs/opencode: textjs.org کی Cloudflare Pages پری ویو ڈیپلائمنٹس اب ڈیفالٹ طور پر اجازت یافتہ نہیں ہیں۔ کسی ایک کو استعمال کرنے کے لیے--allow-originپاس کریں۔- textjs.org/opencode،
@textjs/opencode1.0.x کے برج قبول نہیں کرتا۔bunx @textjs/opencode@latest proxyچلائیں۔ - textjs.org ایک Content-Security-Policy،
Strict-Transport-Security،Cross-Origin-Opener-PolicyاورCross-Origin-Resource-Policyبھیجتا ہے۔ OpenCode صفحہ صرف127.0.0.1یاlocalhostکے سرورز سے جڑتا ہے۔
- Text.js، Firefox اور Safari کونسولز میں رینڈر کرتا ہے۔
اضافے
- OpenCode Lite: فی فائل ڈِفس کا جائزہ لیں، پرامپٹ ہسٹری دیکھیں، لیڈر شارٹ کٹس ترتیب دیں اور پرووائیڈر اکاؤنٹس اور MCP سرورز سنبھالیں۔ سینڈ باکس میں اسکرپٹ شدہ ٹرمینل پین ہے۔
- OpenCode Lite: کمانڈز تلاش کرنے کے لیے
/یا پروجیکٹ فائل منسلک کرنے کے لیے@ٹائپ کریں۔ Tab فائل مینو میں ڈائریکٹری کھولتا ہے۔ منسلک سیشنز سرور کا پروجیکٹ تلاش کرتے ہیں؛ سینڈ باکس اپنی مثالی ریپوزٹری تلاش کرتا ہے۔ - textjs.org/coffee: terminal.shop ڈیمو SSH ایپ کی طرح کونسول کے سائز کی پیروی کرتا ہے، اپنے چھوٹے، درمیانے اور بڑے لے آؤٹس اور 20 × 10 سے نیچے “آپ کا ٹرمینل بہت چھوٹا ہے” کے ساتھ۔ اکاؤنٹ میں ادائیگی کے طریقے، قابل ترمیم نام والا پروفائل اور سبسکرپشنز کے ہفتہ وار شیڈول کی تبدیلیاں شامل ہیں۔ سائن آؤٹ ہونے پر کارٹ اور اکاؤنٹ کے عام سوالات، تعارف اور ڈیبگ معلومات سائن اِن کیے بغیر کھلتے ہیں۔
کارکردگی
@textjs/react:BoxاورTextماؤنٹ اور اپ ڈیٹ پر prop آبجیکٹس کاپی کرنے کے بجائے پہلے سے چھانٹے گئے سین props ریکنسائلر کو پاس کرتے ہیں۔@textjs/core:SceneNode.getTextModel()ایک اسٹرنگ والے<Text>لیوز پر اِن لائن ٹری واک چھوڑ دیتا ہے اور کیش شدہ صفر والےUint16Array،runOfبفرز دوبارہ استعمال کرتا ہے۔CssConsoleDriverاندرونی لوپ میں یکساں اسٹائل والے مسلسل BMP سیل اسکین کرتا ہے، اورConsoleRendererغیر تبدیل شدہ فریموں پرcountYogaNodes()چھوڑ دیتا ہے۔- textjs.org: روٹس اور کونسول کمپینین ٹیبز فی روٹ JS اور CSS چنکس میں تقسیم ہیں۔ اسٹور کی تصاویر
photos/finalماسٹرز سے دوبارہ انکوڈ ہوتی ہیں، اور مصنوعات کی ثانوی تصاویر ہوور یا سلائیڈ بدلنے پر لوڈ ہوتی ہیں۔
اصلاحات
<ViewportControl>،20chکے بجائے پکسلminWidthاستعمال کرتا ہے اور<FocusPad>کے ساتھ میٹرک سے مماثل فال بیک فونٹس درج کرتا ہے، تاکہGeist Monoلوڈ ہونے پر سائز چننے والا کنٹرول اپنی چوڑائی برقرار رکھے۔
اضافے
@textjs/opencode: textjs.org/opencode برج اب بغیر ڈیپینڈنسیز اپنا الگ پیکیج ہے۔ Vite، React اور MCP SDK انسٹال کیے بغیر اسے شروع کرنے کے لیےbunx @textjs/opencode proxy(یاnpx) چلائیں۔text proxyاب بھی کام کرتا ہے اور یہی برج چلاتا ہے۔
تبدیلیاں
- فریم ورک اور CLI پیکیج اب
@textjs/appہے، جس کا نام@textjs/nextسے بدلا گیا ہے تاکہ نام Next.js کے آفیشل انٹیگریشن کا تاثر نہ دے۔@textjs/nextکو@textjs/appکے حق میں متروک کر دیا گیا ہے اور اس کی نئی ریلیزز نہیں آتیں۔ منتقل ہونے کے لیےbun remove @textjs/next && bun add @textjs/appچلائیں اور امپورٹس میں@textjs/nextکو@textjs/appسے بدلیں، بشمول@textjs/app/linkجیسے ذیلی پاتھ۔ CLI اب بھیtextہے، اور create-text-app ٹیمپلیٹس@textjs/appپر انحصار کرتے ہیں۔ - کونسول کے اندر
[▼]پِل اور انسپکٹر کو ڈیولپمنٹ اوورلے کہتے ہیں، اور انسپکٹر کا عنوان▼ Dev Overlay · Turbologہے۔ Text.js DevTools صرف Chrome ایکسٹینشن کا نام ہے۔<TextDevOverlay>اور اس کے props نہیں بدلے۔ dynamic = "error"ایکسپورٹ کرنے والے روٹ ہینڈلرزTX031کے ساتھ ناکام ہوتے ہیں۔ Text.js اسے"force-static"سمجھتا تھا، یہ چیک کیے بغیر کہ ہینڈلر درخواست پڑھتا ہے یا نہیں، جو Next.js میں اس ویلیو کا مطلب ہے۔"force-static"استعمال کریں۔
اصلاحات
text startمسدودHostکا جوابtext devکی طرحTX028سے دیتا ہے۔ ہر سرور اپنی پڑھی جانے والی ترتیب کا نام بتاتا ہے:text devکے لیےvite.server.allowedHostsاورtext startکے لیےserver.allowedHosts۔- textjs.org: سیکھیں کا شپنگ باب اب آپ کو
vercel.jsonری رائٹ شامل کرنے کو نہیں کہتا۔ Vercel اور Cloudflare Pages پرtext build،index.htmlفال بیک خود لکھتا ہے۔ ری رائٹ کی مثال اب Netlify کا_redirectsاستعمال کرتی ہے۔ eslint-plugin-textjs:route-handler-exports،route.tsمیںdynamicاورrevalidateایکسپورٹس کی اجازت دیتا ہے، اورvalid-route-moduleوہاںdynamicویلیوز چیک کرتا ہے۔
اضافے
- textjs.org: سیکھیں کے باب کی چلتی ویڈیو، آپ کے اس سے آگے اسکرول کرنے پر کونے میں منی پلیئر میں منتقل ہو جاتی ہے۔ ہر ویڈیو کے نیچے کیپشنز بٹن کیپشنز آن یا آف کرتا ہے اور انتخاب یاد رکھتا ہے۔
<TextDevOverlay>،pill،shortcutاورshellprops لیتا ہے، تاکہ App Router کے بغیر ایپس اپنی کیز اور تھیم کنٹرولز کے ساتھ انسپکٹر ماؤنٹ کر سکیں۔<FocusPad>ایکbannerلیتا ہے، جو پیغام کی پہلی سطر (مثلاً ایپ کا ورڈ مارک) اور ٹچ ڈیوائسز پر نوٹس کے اوپر دکھتا ہے۔
تبدیلیاں
- textjs.org: Playground کا کنٹرول ڈیش بورڈ، اسٹریمنگ، سانپ، OpenCode اور کافی (terminal.shop) درج کرتا ہے۔ ہر ڈیمو کا اپنا URL ہے: OpenCode،
/opencodeپر اور terminal.shop،/coffeeپر ہے، اور ان کے ورڈ مارکس پیغام کے شروع میں ہیں۔ کاؤنٹر اور فارم Playground سے باہر منتقل ہو گئے؛ دستاویزات اب بھی دونوں کو لائیو مثالوں کے طور پر چلاتی ہیں۔ <FocusPad>کا نیا لے آؤٹ ہے۔ ہر اسٹیٹ تین حصوں والی پروگریس بار، سرخی، ایک بڑا ایلیمنٹ اور متن کی سطر دکھاتی ہے۔ کونسول کھلنے سے پہلے بڑا ایلیمنٹ DevTools شارٹ کٹ ہے۔ کلک کے انتظار میں یہ پوائنٹر ہے۔ لائیو ہونے پر یہ ایپ کےhintsہیں، ایسے کی کیپس جو کیز آنے پر روشن ہوتے ہیں، اور بغیر اشارے کی کیز نیچے دکھتی ہیں۔ اسٹیپ لیبلز، الگ “لائیو” بیج اور “کونسول دیکھیں۔” سطر ہٹا دی گئی ہیں۔ اسٹیٹ بدلنے پر سطریں مدھم سے نمایاں ہوتی ہیں، پہلے پینٹ پر کبھی نہیں، اورprefers-reduced-motionکے تحت حرکت بند ہے۔ ثانوی متن دونوں ظاہری صورتوں میں WCAG AA کنٹراسٹ پورا کرتا ہے، اور کونسول سائز کنٹرول تک کی بورڈ سے پہنچنے پر فوکس رنگ دکھتا ہے۔- textjs.org: Playground نیا
<FocusPad>لے آؤٹ استعمال کرتا ہے۔ کنٹرول کے موجودہ ڈیمو کی سطح کی کیپس جیسی ہے، OpenCode کمانڈ فیلڈ کے کونے اور متن کا سائز URL فیلڈ سے ملتے ہیں، terminal.shop نوٹ تین کے بجائے دو سطریں لیتا ہے، “سورس دیکھیں” سائز کنٹرول کی بیس لائن پر ہے، اور پیڈ کا ہلکا متن AA کنٹراسٹ پورا کرتا ہے۔
اصلاحات
text devہر درخواست کے لیےproxyپاتھ پراکسی سے پیش کرتا ہے۔fetch()،Accept: */*بھیجتا ہے، اس لیے ڈیولپمنٹ سرور پہلے انہیں ایپ کا HTML دیتا تھا، اور opencode ٹیمپلیٹ پہلے رن پر “غیر متوقع ٹوکن '<'” کے ساتھ ناکام ہوتا تھا۔- جب Vite کا ڈیپینڈنسی اسکین صرف سرور کی فائل پڑھے تو
text devاب React کی دوسری کاپی لوڈ نہیں کرتا۔ اسکین نے صرف سرور کے امپورٹ چیک کو متحرک کیا، جس نے اسٹیک ٹریس، پھر کونسول میں “غلط ہک کال” پرنٹ کی، اور Fast Refresh توڑ دیا۔ text devکوئری اسٹرنگ والے صفحہ URLs، مثلاً/?demo، سنبھالتا ہے۔ Vite انہیں پروجیکٹ فولڈر سمجھ کر پوری ڈسک کی نگرانی کرتا تھا، اس لیے Linux پر صفحہ کبھی لوڈ نہیں ہوتا تھا۔- create-text-app: ڈیولپمنٹ پِل اب کسی ٹیمپلیٹ کی پہلی اسکرین پر پہلا کی اشارہ نہیں ڈھانپتا، دستاویزات سے مطابقت کے لیے ڈیفالٹ پروجیکٹ نام
my-appہے، ٹیمپلیٹسeslint-plugin-textjsکی تجویز کردہ کنفگ پاس کرتے ہیں، اور ڈیش بورڈ README،--adapter staticبلڈ کی وضاحت کرتا ہے۔ <FocusPad>اور<ViewportControl>صرف لانگ ہینڈ پراپرٹیز سے بارڈرز سیٹ کرتے ہیں۔ ڈیولپمنٹ میں ہر بار کی اشارہ چمکنے پر React خبردار کرتا تھا “دوبارہ رینڈر کے دوران اسٹائل پراپرٹی اپ ڈیٹ ہو رہی ہے (border)”۔- سطر کی آخری آئٹم والا متن اب چھوٹا ہونے پر اپنی جگہ رکھتا ہے۔
<Spacer>کے بعد یہ وہیں رہتا تھا جہاں سب سے لمبے متن نے اسے چھوڑا تھا، اور اوورفلو سطر میں سمانے کے لیے سکڑے ہوئے ساتھی ایلیمنٹس سکڑے رہتے تھے۔ actionیاhintsبدلنے پر<FocusPad>اپنے اسٹیپس، ذیلی عنوان اور کی سطریں بدل دیتا ہے، تاکہ ایک پیڈ میں ڈیموز بدلنا لے آؤٹ شفٹ کے طور پر رپورٹ نہ ہو۔@textjs/react/testingامپورٹ ہوتے وقت Yoga لوڈ کرتا ہے، تاکہ ٹیسٹ اپنے پہلےrender()سے پہلےfetchکا اسٹب بنا سکے۔
پہلی مستحکم ریلیز۔
▼ Text.js 1.0.0 (Turbolog)۔تبدیلیاں
- مطابقت توڑنے والی تبدیلی: فریم ورک اور CLI پیکیج اب
@textjs/nextہے (npm پرtextjsپہلے سے لیا جا چکا ہے)۔ امپورٹسtextjsسے@textjs/nextپر اپ ڈیٹ کریں۔ - OpenCode برج
bunx @textjs/app proxyہے اور کسی بھی ڈائریکٹری سے چلتا ہے۔ - کونسول ڈیفالٹ طور پر ڈاک شدہ DevTools پینل میں فٹ ہوتا ہے (نیچے، بائیں یا دائیں ڈاک، صفحہ زوم، ٹول بار ریپ)۔ غیر ڈاک شدہ DevTools،
120×36پر واپس آتا ہے۔ پیڈز میں سائز کنٹرول شامل ہوا۔
اضافے
useKeymapکے ساتھ خودکار?مدد اسکرین، کی اشارے اورCtrl+Kکمانڈ پیلیٹ۔- ڈیٹا کمپوننٹس:
List(ورچوئلائزڈ)،Table،Tree۔ - چارٹس:
LineChart،BarChart،Sparkline،ProgressBar، ساتھGradientاورImage۔ - کنٹرولز:
Button،Checkbox،Switch،RadioGroup،Slider،Dialog،Confirmاور ٹوسٹس۔ - لے آؤٹ:
Center،Stack،Grid،SplitPane،FocusScope۔ - ٹائمرز، اینیمیشن، پیمائش، بریک پوائنٹس، اسٹوریج اور کلپ بورڈ کے لیے ہکس۔
- دائیں سے بائیں متن۔ Text.js یونیکوڈ دوطرفہ الگورتھم (UAX #9، Unicode 18.0) نافذ کرتا ہے اور
BidiTest.txtکے تمام 770,241 اورBidiCharacterTest.txtکے 91,707 کیسز پاس کرتا ہے۔ عربی حروف شکل پاتے ہیں، اور<Text dir>ایک span الگ کرتا ہے۔ - مستحکم
TX###ایرر کوڈز۔ فریم ورک ایررز میں کوڈ اورhttps://textjs.org/errors/<code>کا لنک ہوتا ہے۔ - ٹیسٹس میں کمپوننٹس کو متن میں رینڈر کرنے کے لیے
@textjs/react/testing۔ @textjs/react/terminalاورtext run، جو App Router ایپ کو حقیقی ٹرمینل میں رینڈر کرتا ہے۔text mcp، جو ایپ کو Model Context Protocol پر پیش کرتا ہے تاکہ کوڈنگ ایجنٹس براؤزر کے بغیر اس میں نیویگیٹ کریں، کیز دبائیں اور فریم پڑھیں۔- Text.js DevTools ایکسٹینشن، کونسول کے ساتھ پینل جس میں کمپوننٹ ٹری، فریم انسپکٹر اور ٹائم لائن ہیں۔
eslint-plugin-textjsاور لائیو پری ویوز والی VS Code ایکسٹینشن۔apps/terminal-shop: حقیقی API کے ساتھ کونسول میں terminal.shop اسٹور فرنٹ (ڈیفالٹ ڈیولپمنٹ سینڈ باکس، پروڈکشن پر دوہرا لاک)۔- textjs.org: سیکھیں، 10 ابواب کا کورس جو کونسول میں چلتا ہے۔ ہائیڈریشن کے ساتھ بلڈ ٹائم پری رینڈرنگ، خود ہوسٹ کردہ میٹرک سے مماثل فونٹس، سلیش کے بغیر
.htmlروٹس اور لائیو پری ویوز والی نئی دستاویزات۔
کارکردگی
- صفائی کے بعد DevTools تھروٹل کا فیز لاک توڑا۔ صاف کرنے والے فریم کے بعد رینڈرر ایک بار 110 ms انتظار کرتا ہے تاکہ بعد کے فریم DevTools کے فوری پاتھ پر آئیں۔ ڈسپلے تاخیر p50، 63 ms سے 10 ms ہوئی۔
- ڈیمیج بینڈ جزوی پینٹ: صرف تبدیلی سے متاثرہ سطروں کے بینڈز دوبارہ پینٹ ہوتے ہیں۔
- کیش شدہ فی سطر ہیشز، انٹیجر اسٹائل آئی ڈیز اور بغیر ایلوکیشن کے غیر فعال فریم۔
- صفحہ پوشیدہ یا بغیر فوکس ہو تو غیر فعال ٹائمرز صفر۔
اصلاحات
- سطروں کے وقفوں پر اب غیر ضروری خالی پینٹ لیئر spans نہیں، اور دوہرا پردہ بھی نہیں۔
- پردہ اپنی سطر پر ہے، اس لیے DevTools سورس لنک (
VM12:1) کبھی سطر 0 کو ریپ نہیں کرتا۔ - ڈیفالٹ اسپنر سیل کے عین مطابق ہے (Menlo میں بریل گلف نہیں ہیں)۔
brailleورژن اختیاری ہے۔ - Node پر
text buildاب React کی ڈیولپمنٹ بلڈز بنڈل نہیں کرتا۔ - textjs.org: ہر روٹ پر مجموعی لے آؤٹ شفٹ 0 ہے۔ Playground اور OpenCode ایک پیڈ لے آؤٹ مشترک استعمال کرتے ہیں۔
- textjs.org: دستاویزات اور سیکھیں کی سائیڈ بارز لمبے صفحات کے نیچے پن رہتی ہیں۔
- textjs.org: فائل ٹیبز، کوڈ بلاکس اور نثری جدول صرف افقی اسکرول ہوتے ہیں، اس لیے iOS Safari کبھی صفحے کے عمودی سوائپس نہیں لیتا۔
- textjs.org:
scrollbar-gutter: stableصرف ماؤس ڈیوائسز پر لاگو ہوتا ہے۔ iOS Safari پر اس سے پہلا اسکرول اچھلتا تھا۔ - textjs.org: اسکرول اینکرنگ بند ہے۔ iOS Safari پر یہ ہیرو کو چپکے رہنے والے ہیڈر کے نیچے پن کر دیتی تھی۔
- مطابقت توڑنے والی تبدیلی: فریم ورک اور CLI پیکیج اب
بغیر جھلملائے فریم اور سرور رینڈرنگ۔
تبدیلیاں
- ہر فریم پر
console.clear()+console.log()کے بجائے فریم آخر میں جوڑے جاتے ہیں۔ DevTools کونسول کو ہم وقت صاف کرتا ہے مگر نئے پیغامات 50 ms کے تھروٹل پر پینٹ کرتا ہے، اس لیے صاف کرنے سے 15 fps پر DevTools کے 70.6% پینٹس اور 60 fps پر 81.1% پینٹس میں کونسول خالی رہتا تھا۔ شروع میں صفر چوڑائی والا پردے کا span پچھلے فریم چھپا دیتا ہے۔ کونسول صرف پہلے فریم پر،invalidate()کے بعد، غیر فعال حالت میں 100 فریم جمع ہونے پر، یا 300 پر صاف ہوتا ہے۔ - خارج ہونے والے فریموں کے درمیان کم از کم 66 ms کا وقفہ رکھا جاتا ہے (تقریباً 15 fps)۔ تیز تر فریم DevTools کا تھروٹل دوبارہ شروع کرتے ہیں اور خارج کر دیے جاتے ہیں: 60 fps پر DevTools نے خارج ہونے والے 295 فریموں میں سے 67 پینٹ کیے۔
- Playground اور OpenCode پوری اسکرین کے فوکس پیڈ ہیں۔
کارکردگی
- span کی CSS میں صرف لانگ ہینڈ پراپرٹیز، جس سے DevTools کی ہر سطر پر کاپی ہونے والی پراپرٹیز تقریباً 33 سے کم ہو کر تقریباً 7 رہ جاتی ہیں۔ ہیکس رنگ، اور خالی رنز کی کلید صرف پس منظر پر مبنی۔
- بتدریج Markdown پارسنگ اور میموائز شدہ
Markdown،CodeاورDiffکی قطاریں۔ - سنگل پاس ہوسٹ props، صرف ضروری props کی اپ ڈیٹس اور جب متن کا سائز بدل نہیں سکتا تو Yoga کا دوبارہ لے آؤٹ نہیں۔
- اسٹریمنگ فریم کا وقت 0.79 ms سے 0.14 ms، اور اسپنر ٹک کا وقت 0.90 ms سے 0.056 ms ہو گیا۔ آؤٹ پٹ بٹ کی سطح تک یکساں ہے۔
اضافے
- سرور رینڈرنگ۔
runtime = "server"ایکسپورٹ کرنے والا صفحہ، بشمولasync functionکمپوننٹس، سرور پر رینڈر ہوتا ہے اور سرور سے بھیجے گئے ایونٹس پر قطار کی سطح کے سیل ڈیلٹاز تقریباً 19 kB gzip کے فریم پلیئر کو اسٹریم کرتا ہے۔ - جزوی پری رینڈرنگ۔
text buildہر اسٹیٹک روٹ کا پہلا فریم اس کے HTML میں اِن لائن کرتا ہے، اس لیے کسی ماڈیول کے لوڈ ہونے سے پہلے کونسول پینٹ ہو جاتا ہے۔ middleware.ts، روٹ سیگمنٹ کی کنفگ (dynamic،revalidate) اورtextjs/cache(unstable_cache،revalidateTag،revalidatePath)۔text build --adapter static|bun|vercel|cloudflare۔bench/devtools: ایک ٹیسٹ ہارنس جو اصل DevTools فرنٹ اینڈ چلاتا ہے اور خالی پینٹس، خارج کیے گئے فریم، ڈسپلے کی تاخیر اور DevTools کا CPU ناپتا ہے۔
اصلاحات
- DevTools اب
path:line،//host:portاورdata:متن کو لنک نہیں بناتا۔ - OpenCode برج زیر انتظام ڈیمون (عارضی پورٹ، بنیادی توثیق) تلاش کرتا ہے، لکھنے کی درخواستوں پر CSRF ہیڈر بھیجتا ہے اور ناکامیوں کی اطلاع ایک سطر میں دیتا ہے۔
- ہر فریم پر
تبدیلیاں
- الگ ان پٹ (کلید دبانا، پیسٹ کرنا) اگلے اینیمیشن فریم کا انتظار کرنے کے بجائے اسی ٹاسک میں ہم وقت رینڈر ہوتا ہے۔
- مختصر کیا گیا OpenCode TUI جو اصل سے مطابقت رکھتا ہے۔
- textjs.org پر موبائل اور ریسپانسیو ڈیزائن کی مکمل نظرثانی۔
اضافے
@textjs/font:<FigletText>اور<AsciiFont>کے لیے 17 بنڈل شدہ فونٹس والا FIGlet فونٹ پارسر اور رینڈرر۔ آؤٹ پٹfiglet2.2.5 بائنری فائل سے ریکارڈ کیے گئے 273 حوالوں سے مطابقت رکھتا ہے۔text proxy: ایک مقامی CORS برج تاکہ textjs.org آپ کے OpenCode سرور سے رابطہ کر سکے۔
اضافے
apps/opencode-console:console.logمیں رینڈر ہونے والا منسلک OpenCode کلائنٹ، جب کوئی سرور نہ چل رہا ہو تو ڈیمو فال بیک کے ساتھ۔create-text-appکے لیےopencodeٹیمپلیٹ۔- textjs.org: نیا لینڈنگ صفحہ، لائیو کونسول کمپینین، Playground، OpenCode صفحہ اور دستاویزات۔
- اسٹیٹک روٹ جنریشن کے ساتھ GitHub Pages پر ڈیپلائے کرنے کا ورک فلو۔
پہلا سنگ میل۔
اضافے
@textjs/core: فلیٹ ٹائپڈ اَریز پرCellBuffer، Yoga WASM لے آؤٹ،Intl.Segmenterسے متن کی پیمائش، اور%cرن لینتھ انکوڈنگ ڈرائیور۔ ہر تبدیل شدہ فریم پر ایکconsole.logاور غیر فعال حالت میں کوئی نہیں۔@textjs/react: React 19 ریکنسائلر، PascalCase کمپوننٹس (Box،Text،ScrollBox،Input،Textarea،Select،Tabs،Code،Markdown،Diff،Modal،Spinnerاور مزید)، سیل کی سطح پر Tailwind طرز کیclassNameیوٹیلٹیز، تھیمز اور DOM کاFocusPad۔textjs: فائل سسٹم App Router (layout،page،loading،error،not-found، ڈائنامک سیگمنٹس، روٹ ہینڈلرز)،text dev،text build،text startاور کونسول کے اندر[▼]انسپکٹر۔starterاورdashboardٹیمپلیٹس کے ساتھcreate-text-app۔