El framework de la consola
Crea apps full-stack de React que se renderizan dentro de console.log.
Esta página se ejecuta en tu consola. Ábrela con ⌘⌥JCtrl+Shift+J⌘⌥KCtrl+Shift+K⌘⌥C (primero activa las funciones para desarrolladores), haz clic en la vista previa de abajo y pulsa ↑ ↓.
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 admite renderizado concurrente, Suspense y límites de error.
App Router
Las carpetas de app/ se convierten en rutas y layouts, y funcionan Atrás, Adelante y los enlaces profundos.
Cuadrícula adaptable
La cuadrícula se ajusta al panel acoplado de DevTools con cualquier zoom de página.
Entrada de teclado
Las teclas, el pegado y la composición IME llegan a la app mediante un único <textarea> oculto.
Tablas, gráficos, formularios y atajos
Cada fotograma con cambios es una llamada a console.log
Un commit que no cambia ninguna celda nunca llega a la consola.
- React 19
01Confirmación
React aplica cambios mediante un reconciliador personalizado.
- Yoga
02Layout
Yoga distribuye las cajas en celdas enteras.
- CellBuffer
03Pintado
Solo se repintan las filas dañadas.
- Hash de fila
04Filtro de cambios
Los fotogramas sin cambios se detienen aquí.
- RLE
05Codificar
3200 celdas se convierten en 149 spans
%c. - console.log
06Emitir
Los fotogramas se añaden al final con al menos 66 ms de separación.
Fotogramas añadidos al final
Borrar la consola antes de cada fotograma la deja en blanco hasta que DevTools pinta el siguiente. Turbolog añade cada fotograma al final.
Leer el artículoclear() + log()70.6 % en blancolog(), appended1.0 % en blanco%c para 3200 celdasRenderizar rutas en el servidor
Exporta runtime = "server" para renderizar una ruta y sus componentes asíncronos en el servidor. El navegador carga un reproductor de fotogramas de 21 kB (gzip) en lugar de tu 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}- Prerenderizado parcialEl primer fotograma de cada ruta estática se incluye en su HTML. La consola pinta antes de que se cargue JavaScript.
- Middleware
middleware.tsse ejecuta antes de las solicitudes coincidentes, conNextRequest,NextResponseyconfig.matcher. - Caché
revalidate,unstable_cacheyrevalidateTagalmacenan en caché manejadores de ruta y datos, con stale-while-revalidate. - Adaptadores de despliegue
text build --adapteradmitestatic,bun,vercelocloudflare. Las rutas renderizadas en el servidor necesitanbunotext start.
También se ejecuta en terminales y agentes
DevToolstext dev
Turbolog escribe cada fotograma como spans %c en un solo console.log.
Terminaltext run
text run renderiza la misma app de App Router en ANSI de color verdadero y ejecuta los manejadores de ruta en el mismo proceso.
Agentes de programacióntext mcp
Mediante MCP, los agentes navegan por rutas, pulsan teclas y leen cada fotograma como texto plano.
Programar con OpenCode en DevTools
OpenCode Lite es la TUI de OpenCode reconstruida con Text.js para ejecutarse en la consola de tu navegador.
Entorno de pruebas
Un agente con respuestas programadas contesta a cualquier petición, sin instalar nada.
Un comando
Ejecuta bunx @textjs/opencode@latest proxy e introduce el código que muestra. La página se conecta a OpenCode en tu equipo.
Tus modelos y sesiones
Elige con /models cualquier modelo configurado en tu servidor. Las sesiones, los agentes y los modelos provienen de tu servidor de OpenCode.
Herramientas de edición, lint y pruebas
Extensión de DevTools
Añade un panel con el árbol de componentes, un inspector de fotogramas y una cronología por fotograma.
Panel de Text.jsVS Code
Previsualiza el fotograma junto a tu código y genera archivos de App Router.
⌘K VESLint
Detecta etiquetas DOM en componentes de consola, cajas dentro de texto y glifos que Menlo no tiene.
eslint-plugin-textjsPruebas
Renderiza fuera de pantalla, pulsa teclas y comprueba lastFrame() en cualquier ejecutor de pruebas.
Códigos de error
Los errores y las advertencias con un código TX enlazan a una página que explica la solución.
REPL de consola
Pausa, redimensiona, muestra el esquema y copia la app en ejecución desde la línea de comandos de la consola.
window.textDe derecha a izquierda
Implementa el algoritmo bidireccional de Unicode y supera los 770.241 casos de BidiTest.txt.
Fuentes FIGlet
Analiza archivos .flf y reproduce 273 salidas registradas del binario figlet.
Crear un panel de despliegue en tu consola
El curso gratuito tiene 10 capítulos y dura unos 65 minutos.