O framework do console
Crie apps React full-stack que renderizam dentro de console.log.
Esta página está rodando no seu console. Abra-o com ⌘⌥JCtrl+Shift+J⌘⌥KCtrl+Shift+K⌘⌥C (primeiro, ative os recursos de desenvolvedor), clique na prévia abaixo e pressione ↑ ↓.
1import { useState } from "react";2import { AsciiFont, Box, Text, useInput } from "@textjs/app";34export default function Page() {5 const [count, setCount] = useState(0);6 useInput((e) => {7 if (e.key === "up") setCount((c) => c + 1);8 if (e.key === "down") setCount((c) => c - 1);9 });1011 return (12 <Box className="flex-col gap-1 p-2">13 <AsciiFont text="▼ TEXT.JS" />14 <Text color="muted">React 19 in console.log</Text>15 <Text bold color="accent">count = {count}</Text>16 </Box>17 );18}React 19
Text.js suporta renderização concorrente, Suspense e error boundaries.
App Router
Pastas em app/ viram rotas e layouts, e Voltar, Avançar e links diretos funcionam.
Grade responsiva
A grade se ajusta ao painel acoplado do DevTools em qualquer zoom da página.
Entrada por teclado
Teclas, colagem e composição IME chegam ao app por um único <textarea> oculto.
Tabelas, gráficos, formulários e atalhos
Cada quadro alterado é uma chamada a console.log
Um commit que não altera células nunca chega ao console.
- React 19
01Commit
React aplica alterações por um reconciliador personalizado.
- Yoga
02Layout
Yoga organiza caixas em células inteiras.
- CellBuffer
03Pintura
Só linhas danificadas são repintadas.
- Hash da linha
04Filtro de alterações
Quadros sem alterações param aqui.
- RLE
05Codificar
3.200 células viram 149 spans
%c. - console.log
06Emitir
Quadros são anexados com intervalo mínimo de 66 ms.
Quadros anexados
Limpar o console antes de cada quadro o deixa em branco até o DevTools pintar o próximo. O Turbolog anexa cada quadro em vez disso.
Ler o postclear() + log()70.6% em brancolog(), appended1.0% em branco%c para 3.200 célulasRenderizar rotas no servidor
Exporte runtime = "server" para renderizar uma rota e seus componentes assíncronos no servidor. O navegador carrega um reprodutor de quadros de 21 kB (gzip) em vez do seu app.
1import { Suspense } from "react";2import { Box, Text } from "@textjs/app";3import { db } from "@/lib/db";45export const runtime = "server";67async function Deploys() {8 const rows = await db.deploys.latest(5);9 return rows.map((d) => (10 <Text key={d.id}>{`${d.state} ${d.branch}`}</Text>11 ));12}1314export default function Page() {15 return (16 <Box className="flex-col p-1">17 <Text bold>Deployments</Text>18 <Suspense fallback={<Text color="muted">Loading…</Text>}>19 <Deploys />20 </Suspense>21 </Box>22 );23}- Pré-renderização parcialO primeiro quadro de cada rota estática vem no HTML. O console exibe o quadro antes de o JavaScript carregar.
- Middleware
middleware.tsexecuta antes das requisições correspondentes, comNextRequest,NextResponseeconfig.matcher. - Cache
revalidate,unstable_cacheerevalidateTagarmazenam manipuladores de rota e dados em cache, com stale-while-revalidate. - Adaptadores de deploy
text build --adaptertem como destinostatic,bun,verceloucloudflare. Rotas renderizadas no servidor precisam debunoutext start.
Também roda em terminais e agentes
DevToolstext dev
O Turbolog escreve cada quadro como spans %c em um único console.log.
Terminaltext run
text run renderiza o mesmo app App Router em ANSI truecolor e executa manipuladores de rota no mesmo processo.
Agentes de programaçãotext mcp
Via MCP, agentes navegam por rotas, pressionam teclas e leem cada quadro como texto simples.
Programe com OpenCode no DevTools
OpenCode Lite é a TUI do OpenCode reconstruída com Text.js para rodar no console do navegador.
Sandbox
Um agente com roteiro responde a qualquer prompt, sem instalar nada.
Um comando
Execute bunx @textjs/opencode@latest proxy e insira o código exibido. A página se conecta ao OpenCode na sua máquina.
Seus modelos e sessões
Escolha qualquer modelo configurado no servidor com /models. Sessões, agentes e modelos vêm do seu servidor OpenCode.
Ferramentas de editor, lint e testes
Extensão do DevTools
Adiciona um painel com a árvore de componentes, um inspetor de quadros e uma linha do tempo por quadro.
Painel Text.jsVS Code
Exibe uma prévia do quadro ao lado do código e gera arquivos do App Router.
⌘K VESLint
Detecta tags DOM em componentes de console, caixas dentro de texto e glifos ausentes na Menlo.
eslint-plugin-textjsTestes
Renderize fora da tela, pressione teclas e verifique lastFrame() em qualquer executor de testes.
Códigos de erro
Erros e avisos com código TX têm um link para uma página que explica a correção.
REPL do console
Pause, redimensione, ative o wireframe e copie o app em execução pelo prompt do console.
window.textDa direita para a esquerda
Implementa o algoritmo bidirecional Unicode e passa nos 770.241 casos de BidiTest.txt.
Fontes FIGlet
Interpreta arquivos .flf e reproduz 273 saídas registradas do binário figlet.
Crie um painel de deploy no console
O curso gratuito tem 10 capítulos e dura cerca de 65 minutos.