⁦Text.js⁩ میں نیا کیا ہے

⁦Text.js⁩ کی تمام قابل ذکر تبدیلیاں اس فائل میں درج ہیں۔

  1. غیر ریلیز شدہ

    اضافے

    • ⁦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 زیادہ تھی۔
  2. v1.5.0

    اضافے

    • @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⁩ پر دوطرفہ متن کی مثال کے لیے، اپنی تبدیلیاں دوبارہ صفحے کے پری ویو میں دکھاتی ہے۔ کونسول میں مثال کے اوپر کی سطر اب “▼ دستاویزات › تعارف › کاؤنٹر” کے بجائے “▼ دستاویزات › کاؤنٹر” ہے۔
  3. v1.4.1

    اضافے

    • ⁦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 کی گھڑی ایک ٹک آگے کر دیتا تھا۔
  4. v1.4.0

    اضافے

    • @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 ہر %c span کو الگ سے ڈیوائس پکسلز پر بٹھاتا ہے اور دو 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> متن کے ساتھ تصویر کو تصویر کے طور پر دکھانے کے بجائے کونسول کی طرح ہاف بلاکس سے بناتا ہے۔
  5. v1.3.0

    اضافے

    • @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 فریم پر صفائی کی حد برقرار رکھتی ہیں۔
  6. v1.2.0

    اضافے

    • @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/app 1.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/app 1.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 سے باہر پیش نہیں کرتا۔
  7. v1.1.0

    اضافے

    • ⁦Text.js⁩، Firefox اور Safari کونسولز میں رینڈر کرتا ہے۔ CssConsoleDriver، CSS فیچر چیکس سے براؤزر پہچانتا ہے۔ جہاں %c spans اِن لائن رہتے ہیں، وہاں یہ مارجن کے بغیر 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/opencode ⁦1.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 کے سرورز سے جڑتا ہے۔
  8. v1.0.4

    اضافے

    • ⁦OpenCode Lite⁩: فی فائل ڈِفس کا جائزہ لیں، پرامپٹ ہسٹری دیکھیں، لیڈر شارٹ کٹس ترتیب دیں اور پرووائیڈر اکاؤنٹس اور MCP سرورز سنبھالیں۔ سینڈ باکس میں اسکرپٹ شدہ ٹرمینل پین ہے۔
    • ⁦OpenCode Lite⁩: کمانڈز تلاش کرنے کے لیے / یا پروجیکٹ فائل منسلک کرنے کے لیے @ ٹائپ کریں۔ Tab فائل مینو میں ڈائریکٹری کھولتا ہے۔ منسلک سیشنز سرور کا پروجیکٹ تلاش کرتے ہیں؛ سینڈ باکس اپنی مثالی ریپوزٹری تلاش کرتا ہے۔
    • ⁦textjs.org/coffee⁩: terminal.shop ڈیمو SSH ایپ کی طرح کونسول کے سائز کی پیروی کرتا ہے، اپنے چھوٹے، درمیانے اور بڑے لے آؤٹس اور ⁦20 × 10⁩ سے نیچے “آپ کا ٹرمینل بہت چھوٹا ہے” کے ساتھ۔ اکاؤنٹ میں ادائیگی کے طریقے، قابل ترمیم نام والا پروفائل اور سبسکرپشنز کے ہفتہ وار شیڈول کی تبدیلیاں شامل ہیں۔ سائن آؤٹ ہونے پر کارٹ اور اکاؤنٹ کے عام سوالات، تعارف اور ڈیبگ معلومات سائن اِن کیے بغیر کھلتے ہیں۔
  9. v1.0.3

    کارکردگی

    • @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 لوڈ ہونے پر سائز چننے والا کنٹرول اپنی چوڑائی برقرار رکھے۔
  10. v1.0.2

    اضافے

    • @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 ویلیوز چیک کرتا ہے۔
  11. v1.0.1

    اضافے

    • ⁦textjs.org⁩: سیکھیں کے باب کی چلتی ویڈیو، آپ کے اس سے آگے اسکرول کرنے پر کونے میں منی پلیئر میں منتقل ہو جاتی ہے۔ ہر ویڈیو کے نیچے کیپشنز بٹن کیپشنز آن یا آف کرتا ہے اور انتخاب یاد رکھتا ہے۔
    • <TextDevOverlay>، pill، shortcut اور shell props لیتا ہے، تاکہ ⁦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 کا اسٹب بنا سکے۔
  12. v1.0.0

    پہلی مستحکم ریلیز۔ ▼ 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⁩ پر یہ ہیرو کو چپکے رہنے والے ہیڈر کے نیچے پن کر دیتی تھی۔
  13. v0.4.0

    بغیر جھلملائے فریم اور سرور رینڈرنگ۔

    تبدیلیاں

    • ہر فریم پر 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 ہیڈر بھیجتا ہے اور ناکامیوں کی اطلاع ایک سطر میں دیتا ہے۔
  14. v0.3.0

    تبدیلیاں

    • الگ ان پٹ (کلید دبانا، پیسٹ کرنا) اگلے اینیمیشن فریم کا انتظار کرنے کے بجائے اسی ٹاسک میں ہم وقت رینڈر ہوتا ہے۔
    • مختصر کیا گیا ⁦OpenCode TUI⁩ جو اصل سے مطابقت رکھتا ہے۔
    • textjs.org پر موبائل اور ریسپانسیو ڈیزائن کی مکمل نظرثانی۔

    اضافے

    • @textjs/font: <FigletText> اور <AsciiFont> کے لیے 17 بنڈل شدہ فونٹس والا FIGlet فونٹ پارسر اور رینڈرر۔ آؤٹ پٹ figlet 2.2.5 بائنری فائل سے ریکارڈ کیے گئے 273 حوالوں سے مطابقت رکھتا ہے۔
    • text proxy: ایک مقامی CORS برج تاکہ textjs.org آپ کے OpenCode سرور سے رابطہ کر سکے۔
  15. v0.2.0

    اضافے

    • apps/opencode-console: console.log میں رینڈر ہونے والا منسلک OpenCode کلائنٹ، جب کوئی سرور نہ چل رہا ہو تو ڈیمو فال بیک کے ساتھ۔
    • create-text-app کے لیے opencode ٹیمپلیٹ۔
    • textjs.org: نیا لینڈنگ صفحہ، لائیو کونسول کمپینین، Playground، OpenCode صفحہ اور دستاویزات۔
    • اسٹیٹک روٹ جنریشن کے ساتھ ⁦GitHub Pages⁩ پر ڈیپلائے کرنے کا ورک فلو۔
  16. v0.1.0

    پہلا سنگ میل۔

    اضافے

    • @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۔