Status
console.logOperacionalconsole.clearRaramente usadoYogaOperacionalTurbolog encoderOperacionalDevTools ThrottlerRespeitadotextjs.orgOperacionalBenchmark ao vivo
O pipeline de @textjs/core roda nesta aba em um painel de 100×32 e grava quadros em um console em memória.
- Quadro completo
- —
- layout + pintura + codificação
- Digitação
- —
- edição de uma linha
- Quadro ocioso
- —
- nada mudou
- spans %c
- —
- 3.200 células
Inicia automaticamente quando a página fica ociosa.
Histórico de desempenho
packages/core/test/perf.test.ts em cada marco, na mesma máquina (Apple M5 Pro · Bun 1.4.4). Média de 1.000 quadros.
| Versão | Quadro completo | Digitação | Ocioso | spans %c |
|---|---|---|---|---|
0.1.0mar. de 2025 · @textjs/core · 7c91cea | 0.194ms | 0.065ms | 0.043ms | 205 |
0.2.0jul. de 2025 · textjs.org · 92437cc | 0.192ms | 0.067ms | 0.042ms | 205 |
0.3.0nov. de 2025 · 10× input · 8c2d1b1 | 0.205ms | 0.065ms | 0.043ms | 146 |
0.3.0nov. de 2025 · Mobile pass · e2e6e46 | 0.212ms | 0.067ms | 0.045ms | 146 |
0.4.0mai. de 2026 · Zero-flash frames · f007ade | 0.184ms | 0.046ms | 0.028ms | 146 |
1.0.0out. de 2026 · Text.js 1.0 · 57968b6 | 0.163ms | 0.011ms | 0.000ms | 149 |
Frontend do DevTools
bench/devtools no Chrome for Testing: pinturas em branco, quadros entregues e atraso de exibição, 5 s por execução. Como medimos.
| Driver | FPS | Pinturas em branco | Pintados / emitidos | Atraso p50 |
|---|---|---|---|---|
| Anexar (em produção) | 15 | 1.0% | 74 / 75 | 10.4ms |
| Limpar por quadro | 15 | 70.6% | 70 / 75 | 60.4ms |
| Anexar, sem intervalo | 60 | 0.8% | 67 / 295 | 31.2ms |
| Limpar por quadro | 60 | 81.1% | 45 / 300 | 9.8ms |
Incidentes anteriores
Mais recentes primeiro. Horários em UTC.
outubro de 2026
Páginas presas sob o cabeçalho no Safari para iOS27 de out. – 28 de out. de 2026 · Resolvido
- Resolvido
Este incidente foi resolvido.
- Em monitoramento
Uma correção foi publicada. A ancoragem de rolagem está desativada (
overflow-anchor: none). Estamos monitorando. - Identificado
O título principal ainda pode ficar preso sob o cabeçalho fixo após rolar para baixo e voltar ao topo. A ancoragem de rolagem do Safari está ajustando a posição de rolagem.
- Em monitoramento
Uma correção foi publicada. Esses elementos agora rolam apenas na horizontal, e
scrollbar-gutter: stablese aplica apenas a dispositivos com mouse. - Identificado
Abas de arquivos, blocos de código e tabelas no texto têm 1 px de transbordamento vertical devido ao sublinhado da aba ativa, então rolam nos dois eixos e o iOS direciona a eles os gestos verticais destinados à página.
scrollbar-gutter: stabletambém causa um salto na primeira rolagem no iOS. - Em investigação
Estamos investigando relatos de que não é possível rolar as páginas de textjs.org de volta ao topo no Safari para iOS.
Este incidente afetou: textjs.org.
Análise pós-incidente
As páginas de textjs.org não se deslocam durante o carregamento, então a ancoragem de rolagem não tinha nada a corrigir. No Safari para iOS, ela prendia a seção principal sob o cabeçalho fixo e impedia a rolagem de volta ao topo.
?debug=scrollem textjs.org agora mostra uma leitura ao vivo dos eventos de rolagem, toque e redimensionamento e identifica quem fez cada chamada programática de foco ou rolagem.Correções:
297c5d7,55da525,8424fcd· Histórico de alterações: 1.0.0- Resolvido
Testes de regras de lint falhando na CI23 de out. de 2026 · Resolvido
- Resolvido
O testador agora lê
it.onlysob demanda, quando um teste chamaRuleTester.itOnly. A CI está passando. - Identificado
Bun lança uma exceção ao ler
it.onlyquando a variável de ambienteCIestá definida. O testador de regras atribuiRuleTester.itOnly = it.onlyna importação, então o carregamento falha. - Em investigação
A suíte de testes de
eslint-plugin-textjsfalha na CI antes de executar qualquer teste de regra. As execuções locais passam.
Análise pós-incidente
@typescript-eslint/rule-testerrecebe suas funções de teste como propriedades estáticas deRuleTester. A correção envolveit.onlyem uma função. Nenhum pacote ou página foi afetado.Correção:
eca3f78- Resolvido
Deslocamento de layout em /playground e /opencode21 de out. – 22 de out. de 2026 · Resolvido
- Resolvido
O deslocamento cumulativo de layout é 0 em todas as rotas.
- Em monitoramento
Uma correção foi publicada. As duas páginas compartilham um layout de área, e o tamanho é anexado sem mover “Ajustar console”. Estamos monitorando.
- Identificado
O controle de tamanho do console anexa o tamanho medido ao rótulo após a hidratação (
Fit console · 120×36), o que move o nó de texto “Ajustar console”. As linhas superior e inferior da área também têm alturas diferentes nas duas páginas, então a área se recentraliza na navegação. - Em investigação
Nossa auditoria de deslocamento de layout registra um deslocamento cumulativo de layout de 0,0001 em /playground e /opencode. Todas as outras rotas cobertas registram 0. A área de foco também se move ao navegar entre as duas páginas.
Este incidente afetou: textjs.org.
Análise pós-incidente
A área agora tem espaços superior e inferior de altura fixa, e cada demonstração reserva as mesmas linhas, então trocar de página ou demonstração não move nada. O painel de conexão do OpenCode mostra uma linha de status em todos os estados, com um esqueleto até a hidratação.
apps/web/scripts/e2e-layout.mjsverifica caixas idênticas entre rotas, demonstrações, tamanhos de viewport e estados de conexão.Correção:
8f22b9b· Histórico de alterações: 1.0.0- Resolvido
Nome de pacote textjs indisponível no npm14 de out. – 15 de out. de 2026 · Resolvido
- Resolvido
Este incidente foi resolvido.
- Em monitoramento
O pacote do framework e da CLI agora é
@textjs/next, no mesmo escopo de@textjs/coree@textjs/react. As importações mudam detextjspara@textjs/next. - Identificado
O nome
textjspertence a outro pacote do npm desde 25 de março de 2016. - Em investigação
A publicação do pacote do framework
textjsno npm falha com403 Forbidden.
Análise pós-incidente
A partir do Text.js 1.0, os apps importam de
@textjs/nextem vez detextjs, e a ponte do OpenCode ébunx @textjs/app proxy, que executa a partir de qualquer diretório.Text.js 1.0: Uma mudança de nome · Histórico de alterações: 1.0.0
- Resolvido
setembro de 2026
Camadas de pintura vazias nas quebras de linha15 de set. – 16 de set. de 2026 · Resolvido
- Resolvido
Este incidente foi resolvido.
- Em monitoramento
Uma correção foi implantada. Quebras de linha que não continuam um trecho agora redefinem
%cpara um estilo vazio primeiro, para que o DevTools emita uma quebra de linha sem estilo. Cada quadro carrega uma cortina. - Identificado
Quando um trecho estilizado termina em uma quebra de linha, o
\né escrito dentro do span%cdo trecho. O DevTools divide o span na quebra de linha, e o restante vazio se torna um spandisplay: inline-blockcomcontain: paint, que recebe sua própria camada de pintura. - Em investigação
Estamos investigando elementos
<span>vazios na maioria das quebras de linha dos quadros no DevTools e um span de cortina duplicado em alguns quadros.
Este incidente afetou: Turbolog encoder.
Análise pós-incidente
Spans com o mesmo estilo ainda são unidos entre quebras de linha. A cortina também passou para uma linha própria: o DevTools posiciona o link de origem (
VM12:1) à direita da primeira linha de uma mensagem, e uma cortina inline deixava esse link ao lado da linha 0, estreitando-a.- Resolvido
agosto de 2026
Aumento da latência de exibição após console.clear27 de ago. – 31 de ago. de 2026 · Resolvido
- Resolvido
O atraso mediano de exibição em
bench/devtoolsé de 10,4 ms. A correção vem no Text.js 1.0. - Em monitoramento
Uma correção foi implantada. Após qualquer quadro que limpe o console, o renderizador espera 110 ms uma vez, para que os quadros seguintes cheguem mais de 50 ms após a atualização anterior do DevTools e sigam seu caminho imediato.
- Identificado
Após uma limpeza, o DevTools insere uma linha “O console foi limpo”. Ela ocupa a execução imediata do limitador e envia o próximo quadro para o temporizador de 50 ms. Com quadros separados por 66 ms, todos os quadros seguintes permanecem nesse temporizador.
- Em investigação
bench/devtoolsregistra um atraso mediano de exibição de 63 ms após a limpeza do console. O atraso permanece nesse nível em todos os quadros seguintes.
Este incidente afetou: DevTools Throttler, console.clear.
Análise pós-incidente
Entradas discretas ainda são renderizadas de forma síncrona quando o intervalo entre quadros permite.
Quebrar o travamento de fase · Histórico de alterações: 1.0.0
- Resolvido
Spinner desalinha linhas no console do DevTools11 de ago. – 12 de ago. de 2026 · Resolvido
- Resolvido
Este incidente foi resolvido. A correção vem no Text.js 1.0.
- Em monitoramento
Uma correção foi implantada. O spinner padrão
dotsagora desenha blocos de quadrante (▘ ▝ ▗ ▖), cada um ocupando uma célula na Menlo. Os quadros braille estão disponíveis comovariant="braille"para terminais. - Identificado
O spinner padrão desenha padrões braille (U+2800 a U+28FF). O Text.js mede cada um como uma célula, mas a Menlo, fonte do console do DevTools no macOS, não tem glifos braille. O glifo substituto é mais largo que uma célula e empurra o restante da linha para a direita.
- Em investigação
No macOS, linhas que contêm um
<Spinner>ficam desalinhadas no DevTools. As células à direita do spinner ficam fora da grade.
Este incidente afetou: console.log.
Análise pós-incidente
LineChartdesenha pontos de quadrante por padrão pelo mesmo motivo. Braille está disponível commarker="braille".- Resolvido
maio de 2026
Aumento de pinturas em branco no console do DevTools5 de mai. – 19 de mai. de 2026 · Resolvido
- Resolvido
A correção foi lançada no Text.js 0.4.0. As pinturas em branco estão em 1,0%, todas no primeiro quadro.
- Em monitoramento
textjs.org agora anexa quadros em vez de limpar o console. Um span de cortina com largura zero mantém os quadros anteriores fora de vista, e os quadros são espaçados em pelo menos 66 ms.
- Identificado
O DevTools aplica
console.clear()de forma síncrona, mas limita a pintura de novas mensagens a intervalos de 50 ms. Cada quadro remove o anterior imediatamente e é pintado até 50 ms depois. Embench/devtools, um painel de 100×32 ficou em branco em 70,6% das pinturas do DevTools a 15 fps e em 81,1% a 60 fps. - Em investigação
Estamos investigando relatos de que o console do DevTools pisca vazio entre quadros sob carga.
Este incidente afetou: console.clear, DevTools Throttler.
Análise pós-incidente
Desde a versão 0.1.0, o Turbolog enviava um
console.clear()e umconsole.log()por quadro alterado.bench/devtools, que controla o frontend real do DevTools no Chrome for Testing, foi criado para medir este incidente e produziu os números na tabela do frontend do DevTools acima.Correção:
f007ade· Turbolog: eliminando o clarão · Registro de alterações: 0.4.0- Resolvido
abril de 2026
Caminhos de arquivo nos quadros do console reestilizados como links14 de abr. – 15 de abr. de 2026 · Resolvido
- Resolvido
Este incidente foi resolvido.
- Em monitoramento
Uma correção foi implantada. O codificador insere um word joiner (U+2060) em textos
path:line,//host:portedata:, a menos que a célula permita links. - Identificado
O DevTools transforma URLs e textos
path:linee//host:portem mensagens do console em links e força neles as cores do seu tema. O codificador já separava://ewww., maspath:linee o//host:portapós um esquema ainda são reconhecidos. - Em investigação
Textos como
src/app.tsx:12ehttp://localhost:3000aparecem na cor de link do DevTools em vez de usar seu estilo%c.
Este incidente afetou: Turbolog encoder.
Análise pós-incidente
://ewww.contêm um word joiner desde a versão 0.1.0. Células que devem continuar clicáveis definem o atributo allow-link e são escritas sem alterações.- Resolvido
novembro de 2025
Atraso nas teclas em apps de console4 de nov. – 18 de nov. de 2025 · Resolvido
- Resolvido
A correção foi lançada no Text.js 0.3.0.
- Em monitoramento
Uma correção foi implantada. Entradas discretas, como uma tecla pressionada ou uma colagem, agora são renderizadas de forma síncrona na mesma tarefa. Outras atualizações ainda fazem commit em
requestAnimationFrame. - Identificado
Cada atualização, incluindo uma tecla pressionada, espera pelo próximo
requestAnimationFrameantes que o React faça o commit e o quadro seja registrado. - Em investigação
A digitação em apps de console fica atrasada em relação ao teclado, mais visivelmente no OpenCode em textjs.org.
Este incidente afetou: textjs.org.
Análise pós-incidente
As teclas pressionadas não esperam mais pelo próximo quadro de animação. Commits que não vêm de entradas, como temporizadores e dados em streaming, ainda são agrupados por quadro de animação.
Correção:
8c2d1b1· Registro de alterações: 0.3.0- Resolvido