Status

Todos os sistemas operacionaisAtualizado em 31 de outubro de 2026
console.logOperacional
Há 90 diasUma chamada por quadro alterado, nenhuma quando ocioso.Hoje
console.clearRaramente usado
Há 90 diasNo primeiro quadro, após invalidate(), quando ocioso com 100 quadros empilhados e aos 300.Hoje
YogaOperacional
Há 90 diasLayout flexbox em WebAssembly, pointScaleFactor 1.Hoje
Turbolog encoderOperacional
Há 90 diasFiltro por hash de linha e codificação %c por comprimento de sequência.Hoje
DevTools ThrottlerRespeitado
Há 90 diasLimitação da área de visualização a 50 ms. Os quadros têm um intervalo mínimo de 66 ms.Hoje
textjs.orgOperacional
Há 90 diasDocumentação, Aprender, Playground, blog e loja.Hoje

Benchmark 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ãoQuadro completoDigitaçãoOciosospans %c
0.1.0mar. de 2025 · @textjs/core · 7c91cea0.194ms0.065ms0.043ms205
0.2.0jul. de 2025 · textjs.org · 92437cc0.192ms0.067ms0.042ms205
0.3.0nov. de 2025 · 10× input · 8c2d1b10.205ms0.065ms0.043ms146
0.3.0nov. de 2025 · Mobile pass · e2e6e460.212ms0.067ms0.045ms146
0.4.0mai. de 2026 · Zero-flash frames · f007ade0.184ms0.046ms0.028ms146
1.0.0out. de 2026 · Text.js 1.0 · 57968b60.163ms0.011ms0.000ms149

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.

DriverFPSPinturas em brancoPintados / emitidosAtraso p50
Anexar (em produção)151.0%74 / 7510.4ms
Limpar por quadro1570.6%70 / 7560.4ms
Anexar, sem intervalo600.8%67 / 29531.2ms
Limpar por quadro6081.1%45 / 3009.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
    1. Resolvido

      Este incidente foi resolvido.

    2. Em monitoramento

      Uma correção foi publicada. A ancoragem de rolagem está desativada (overflow-anchor: none). Estamos monitorando.

    3. 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.

    4. Em monitoramento

      Uma correção foi publicada. Esses elementos agora rolam apenas na horizontal, e scrollbar-gutter: stable se aplica apenas a dispositivos com mouse.

    5. 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: stable também causa um salto na primeira rolagem no iOS.

    6. 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=scroll em 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

  • Testes de regras de lint falhando na CI23 de out. de 2026 · Resolvido
    1. Resolvido

      O testador agora lê it.only sob demanda, quando um teste chama RuleTester.itOnly. A CI está passando.

    2. Identificado

      Bun lança uma exceção ao ler it.only quando a variável de ambiente CI está definida. O testador de regras atribui RuleTester.itOnly = it.only na importação, então o carregamento falha.

    3. Em investigação

      A suíte de testes de eslint-plugin-textjs falha na CI antes de executar qualquer teste de regra. As execuções locais passam.

    Análise pós-incidente

    @typescript-eslint/rule-tester recebe suas funções de teste como propriedades estáticas de RuleTester. A correção envolve it.only em uma função. Nenhum pacote ou página foi afetado.

    Correção: eca3f78

  • Deslocamento de layout em /playground e /opencode21 de out. – 22 de out. de 2026 · Resolvido
    1. Resolvido

      O deslocamento cumulativo de layout é 0 em todas as rotas.

    2. 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.

    3. 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.

    4. 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.mjs verifica 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

  • Barra lateral da documentação sai de vista no fim de páginas longas16 de out. – 17 de out. de 2026 · Resolvido
    1. Resolvido

      Este incidente foi resolvido.

    2. Em monitoramento

      Uma correção foi publicada. Os capítulos de Aprender também renderizam o rodapé dentro da coluna de conteúdo. Estamos monitorando.

    3. Identificado

      A barra lateral de capítulos em Aprender tem o mesmo problema.

    4. Em monitoramento

      Uma correção foi publicada. As páginas da documentação renderizam o rodapé dentro da coluna de conteúdo, então o layout alcança o fim da página.

    5. Identificado

      A barra lateral usa position: sticky dentro do layout da documentação, e o rodapé do site é renderizado depois desse layout. Um elemento sticky só permanece fixo enquanto seu bloco contêiner está na tela, então, quando o rodapé entra na tela com a rolagem, ele leva a barra lateral junto.

    6. Em investigação

      Estamos investigando relatos de que a barra lateral da documentação sai de vista ao rolar até o fim de páginas longas.

    Este incidente afetou: textjs.org.

    Análise pós-incidente

    Páginas com uma barra lateral fixa (documentação e capítulos de Aprender) renderizam o rodapé na coluna de conteúdo. As outras páginas mantêm o rodapé compartilhado.

    Correção: 131ac96 · Histórico de alterações: 1.0.0

  • Nome de pacote textjs indisponível no npm14 de out. – 15 de out. de 2026 · Resolvido
    1. Resolvido

      Este incidente foi resolvido.

    2. Em monitoramento

      O pacote do framework e da CLI agora é @textjs/next, no mesmo escopo de @textjs/core e @textjs/react. As importações mudam de textjs para @textjs/next.

    3. Identificado

      O nome textjs pertence a outro pacote do npm desde 25 de março de 2016.

    4. Em investigação

      A publicação do pacote do framework textjs no npm falha com 403 Forbidden.

    Análise pós-incidente

    A partir do Text.js 1.0, os apps importam de @textjs/next em vez de textjs, 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

setembro de 2026

  • Camadas de pintura vazias nas quebras de linha15 de set. – 16 de set. de 2026 · Resolvido
    1. Resolvido

      Este incidente foi resolvido.

    2. Em monitoramento

      Uma correção foi implantada. Quebras de linha que não continuam um trecho agora redefinem %c para um estilo vazio primeiro, para que o DevTools emita uma quebra de linha sem estilo. Cada quadro carrega uma cortina.

    3. Identificado

      Quando um trecho estilizado termina em uma quebra de linha, o \n é escrito dentro do span %c do trecho. O DevTools divide o span na quebra de linha, e o restante vazio se torna um span display: inline-block com contain: paint, que recebe sua própria camada de pintura.

    4. 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.

    Histórico de alterações: 1.0.0

agosto de 2026

  • Aumento da latência de exibição após console.clear27 de ago. – 31 de ago. de 2026 · Resolvido
    1. Resolvido

      O atraso mediano de exibição em bench/devtools é de 10,4 ms. A correção vem no Text.js 1.0.

    2. 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.

    3. 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.

    4. Em investigação

      bench/devtools registra 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

  • Spinner desalinha linhas no console do DevTools11 de ago. – 12 de ago. de 2026 · Resolvido
    1. Resolvido

      Este incidente foi resolvido. A correção vem no Text.js 1.0.

    2. Em monitoramento

      Uma correção foi implantada. O spinner padrão dots agora desenha blocos de quadrante (▘ ▝ ▗ ▖), cada um ocupando uma célula na Menlo. Os quadros braille estão disponíveis como variant="braille" para terminais.

    3. 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.

    4. 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

    LineChart desenha pontos de quadrante por padrão pelo mesmo motivo. Braille está disponível com marker="braille".

    Histórico de alterações: 1.0.0

maio de 2026

  • Aumento de pinturas em branco no console do DevTools5 de mai. – 19 de mai. de 2026 · Resolvido
    1. 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.

    2. 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.

    3. 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. Em bench/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.

    4. 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 um console.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

abril de 2026

  • Caminhos de arquivo nos quadros do console reestilizados como links14 de abr. – 15 de abr. de 2026 · Resolvido
    1. Resolvido

      Este incidente foi resolvido.

    2. Em monitoramento

      Uma correção foi implantada. O codificador insere um word joiner (U+2060) em textos path:line, //host:port e data:, a menos que a célula permita links.

    3. Identificado

      O DevTools transforma URLs e textos path:line e //host:port em mensagens do console em links e força neles as cores do seu tema. O codificador já separava :// e www., mas path:line e o //host:port após um esquema ainda são reconhecidos.

    4. Em investigação

      Textos como src/app.tsx:12 e http://localhost:3000 aparecem na cor de link do DevTools em vez de usar seu estilo %c.

    Este incidente afetou: Turbolog encoder.

    Análise pós-incidente

    :// e www. 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.

    Registro de alterações: 0.4.0

novembro de 2025

  • Atraso nas teclas em apps de console4 de nov. – 18 de nov. de 2025 · Resolvido
    1. Resolvido

      A correção foi lançada no Text.js 0.3.0.

    2. 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.

    3. Identificado

      Cada atualização, incluindo uma tecla pressionada, espera pelo próximo requestAnimationFrame antes que o React faça o commit e o quadro seja registrado.

    4. 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