Konsol framework’ü

console.log içinde render edilen full-stack React uygulamaları geliştirin.

Başla

Bu sayfa konsolunuzda çalışıyor. ⌘⌥JCtrl+Shift+J⌘⌥KCtrl+Shift+K⌘⌥C ile açın (önce geliştirici özelliklerini açın), aşağıdaki ön izlemeye tıklayın ve ↑ ↓ tuşlarına basın.

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}
viewport:3

React 19

Text.js eşzamanlı render etmeyi, Suspense’i ve hata sınırlarını destekler.

App Router

app/ içindeki klasörler rota ve layout olur; Geri, İleri ve derin bağlantılar çalışır.

Duyarlı ızgara

Izgara, her sayfa yakınlaştırma düzeyinde sabitlenmiş DevTools paneline sığar.

Klavye girdisi

Tuşlar, yapıştırma ve IME kompozisyonu, tek bir gizli <textarea> üzerinden uygulamaya ulaşır.

Tablolar, grafikler, formlar ve kısayollar

Canlı
preview://table:1
↑ ↓ gezinme · s sıralama · Space seçme
Belgeler
Layout
  • <Box>
  • <Stack>
  • <Grid>
  • <SplitPane>
  • <ScrollBox>
  • <Center>
Veri
  • <List>
  • <Table>
  • <Tree>
  • <Markdown>
  • <Code>
  • <Diff>
Grafikler
  • <LineChart>
  • <BarChart>
  • <Sparkline>
  • <ProgressBar>
  • <Gradient>
  • <Image>
Kontroller
  • <Input>
  • <Select>
  • <Checkbox>
  • <Switch>
  • <Slider>
  • <Dialog>
Klavye
  • useKeymap
  • <KeyHelp>
  • <KeyHints>
  • <CommandPalette>
  • <StatusBar>
  • useFocus

Değişen her kare bir console.log çağrısıdır

Hiçbir hücreyi değiştirmeyen bir commit konsola ulaşmaz.

  1. React 19

    01Commit

    React, özel bir reconciler ile commit yapar.

  2. Yoga

    02Layout

    Yoga kutuları tam hücrelere yerleştirir.

  3. CellBuffer

    03Boyama

    Yalnızca değişen satırlar yeniden boyanır.

  4. Satır hash’i

    04Değişiklik kapısı

    Değişmeyen kareler burada durur.

  5. RLE

    05Kodlama

    3.200 hücre, 149 %c span’ine dönüşür.

  6. console.log

    06Çıktı

    Kareler en az 66 ms arayla sona eklenir.

Değişen kare Değişmeyen kare, 0 çağrı

Sona eklenen kareler

Her kareden önce konsolu temizlemek, DevTools bir sonrakini boyayana kadar konsolu boş bırakır. Turbolog bunun yerine her kareyi sona ekler.

Yazıyı oku
clear() + log()%70.6 boş
log(), appended%1.0 boş
0.163msTam yeniden boyama (layout, boyama, kodlama)
0.011msTuş vuruşu gibi tek satırlık düzenleme
0 çağrıBoşta kare
149 span3.200 hücre için %c argümanları
100×32 gösterge paneli, 1.000 kare ortalaması · Apple M5 Pro · Bun 1.4.4Turbolog motoru belgeleri

Rotaları sunucuda render etme

Bir rotayı ve asenkron bileşenlerini sunucuda render etmek için runtime = "server" dışa aktarın. Tarayıcı, uygulamanız yerine 21 kB (gzip) kare oynatıcı yükler.

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}

DevTools’ta OpenCode ile kodlama

OpenCode Lite, tarayıcı konsolunuzda çalışması için Text.js ile yeniden oluşturulan OpenCode TUI’dır.

Deneme ortamı

Önceden tanımlı bir ajan, kurulum gerektirmeden her prompt’a yanıt verir.

Tek komut

bunx @textjs/opencode@latest proxy komutunu çalıştırın ve yazdırdığı kodu girin. Sayfa, makinenizdeki OpenCode’a bağlanır.

Modelleriniz ve oturumlarınız

/models ile sunucunuzda yapılandırılmış herhangi bir modeli seçin. Oturumlar, ajanlar ve modeller OpenCode sunucunuzdan gelir.