Text.js 1.0
Text.js 1.0 стабилен. Он рендерит приложения React 19 и App Router в консоли DevTools с одним вызовом console.log на кадр.
Сегодня мы выпускаем Text.js 1.0, консольный фреймворк для веба.
bunx create-text-app@latestText.js рендерит приложения React 19 в консоли Chrome DevTools: макеты, маршрутизацию, фокус, ввод, формы, графики и потоковый Markdown отрисовывает console.log.
Что вошло в 1.0
- App Router.
layout.tsx,page.tsx,[param],loading.tsx,error.tsx,not-found.tsxиapi/*/route.ts, синхронизированные сwindow.location. Он следует соглашениям Next.js App Router. - Turbolog. Yoga flexbox размещает сетку ячеек,
CellBufferна основе типизированных массивов хранит её, а кодировщик серий превращает её в один вызовconsole.log(format, ...css). Кадры без изменений не вызывают консоль. - Набор компонентов.
Box,Text,ScrollBox,Input,Select,Tabs,Markdown,Diff, виртуализированныйList,Table,Tree, графики, диалоги, всплывающие уведомления и палитра командCtrl+Kна основеuseKeymap. - Дописываемые кадры. Кадры дописываются ниже предыдущего, поэтому консоль не вспыхивает пустотой между кадрами. Подробнее об этом в статье Turbolog: устранение мерцания.
- Текст справа налево. Иврит и арабский отображаются в визуальном порядке с формообразованием арабских букв благодаря реализации UAX #9, которая проходит все 770 241 тест из
BidiTest.txt. См. Текст справа налево в консоли. - Адаптивная консоль. Text.js подстраивается под закреплённую панель DevTools, учитывая масштаб страницы и переносы панели инструментов. В отдельном окне используется размер
120×36. text run. То же приложение App Router рендерится в настоящем терминале.- Инструменты для агентов и редакторов.
text mcpпредоставляет ваше приложение агентам программирования через Model Context Protocol, а расширение Text.js DevTools добавляет панель рядом с «Консолью».eslint-plugin-textjsи расширение для VS Code тоже входят в 1.0.
Одно переименование
Пакет фреймворка теперь называется @textjs/next. Имя textjs было занято в npm. Обновите импорты:
- import { Box, Text } from "textjs";+ import { Box, Text } from "@textjs/next";Обновление, 1.0.2: пакет теперь называется @textjs/app, а @textjs/next устарел. Чтобы перейти, выполните bun remove @textjs/next && bun add @textjs/app и импортируйте из @textjs/app.
Числа
На плотно заполненной панели 100×32 (46 текстовых узлов, 149 span %c), измерено с помощью packages/core/test/perf.test.ts:
| Кадр | Среднее |
|---|---|
| Полная перерисовка (расчёт макета, отрисовка, кодирование) | 0,163 мс |
| Изменение одной строки (ввод текста) | 0,011 мс |
| Без изменений | 0,000 мс, 0 вызовов консоли |
Обработка неизменившегося кадра завершается до выделения памяти под строку, поэтому кадры без изменений занимают 0,000 мс.
Попробовать
Откройте textjs.org и нажмите ⌘⌥J (Ctrl+Shift+J в Windows и Linux). Сайт запускает приложение Text.js в вашей консоли, по одному представлению на страницу. В Playground есть панель показателей, потоковый Markdown и «Змейка». OpenCode подключается к вашему локальному серверу OpenCode.
Полный список изменений находится в журнале изменений, а исходный код — на GitHub.