Status

Wszystkie systemy działająZaktualizowano 31 października 2026
console.logDziała
90 dni temuJedno wywołanie na zmienioną klatkę, żadnego w bezczynności.Dzisiaj
console.clearRzadko używane
90 dni temuPierwsza klatka, po invalidate(), w bezczynności po zebraniu 100 klatek oraz przy 300.Dzisiaj
YogaDziała
90 dni temuLayout flexbox w WebAssembly, pointScaleFactor 1.Dzisiaj
Turbolog encoderDziała
90 dni temuFiltrowanie przez hashe wierszy i kodowanie serii %c.Dzisiaj
DevTools ThrottlerRespektowane
90 dni temuOgraniczenie aktualizacji obszaru widoku do 50 ms. Odstęp między klatkami wynosi co najmniej 66 ms.Dzisiaj
textjs.orgDziała
90 dni temuDokumentacja, Nauka, Playground, blog i sklep.Dzisiaj

Benchmark na żywo

Potok @textjs/core działa w tej karcie na pulpicie 100×32 i zapisuje klatki w konsoli w pamięci.

Pełna klatka
—
layout + rysowanie + kodowanie
Pisanie
—
edycja jednego wiersza
Klatka bezczynności
—
bez zmian
spany %c
—
3200 komórek

Uruchamia się automatycznie, gdy strona jest bezczynna.

Historia wydajności

packages/core/test/perf.test.ts na każdym etapie, ta sama maszyna (Apple M5 Pro · Bun 1.4.4). Średnia z 1000 klatek.

WydaniePełna klatkaPisanieBezczynnośćspany %c
0.1.0mar 2025 · @textjs/core · 7c91cea0.194ms0.065ms0.043ms205
0.2.0lip 2025 · textjs.org · 92437cc0.192ms0.067ms0.042ms205
0.3.0lis 2025 · 10× input · 8c2d1b10.205ms0.065ms0.043ms146
0.3.0lis 2025 · Mobile pass · e2e6e460.212ms0.067ms0.045ms146
0.4.0maj 2026 · Zero-flash frames · f007ade0.184ms0.046ms0.028ms146
1.0.0paź 2026 · Text.js 1.0 · 57968b60.163ms0.011ms0.000ms149

Frontend DevTools

bench/devtools w Chrome for Testing: puste odrysowania, dostarczone klatki i opóźnienie wyświetlania, 5 s na pomiar. Jak mierzymy.

SterownikFPSPuste odrysowaniaOdrysowane / wyemitowaneOpóźnienie p50
Dopisywanie (obecna wersja)151.0%74 / 7510.4ms
Czyszczenie co klatkę1570.6%70 / 7560.4ms
Dopisywanie bez odstępów600.8%67 / 29531.2ms
Czyszczenie co klatkę6081.1%45 / 3009.8ms

Poprzednie incydenty

Od najnowszych. Godziny w UTC.

październik 2026

  • Strony uwięzione pod nagłówkiem w Safari na iOS27 paź – 28 paź 2026 · Rozwiązano
    1. Rozwiązano

      Ten incydent został rozwiązany.

    2. Monitorowanie

      Wdrożono poprawkę. Kotwiczenie przewijania jest wyłączone (overflow-anchor: none). Monitorujemy sytuację.

    3. Zidentyfikowano

      Główny nagłówek nadal może utknąć pod przyklejonym nagłówkiem po przewinięciu w dół i z powrotem w górę. Kotwiczenie przewijania w Safari zmienia pozycję przewijania.

    4. Monitorowanie

      Wdrożono poprawkę. Te elementy przewijają się teraz tylko w poziomie, a scrollbar-gutter: stable dotyczy tylko urządzeń z myszą.

    5. Zidentyfikowano

      Karty plików, bloki kodu i tabele w tekście mają 1 px przepełnienia w pionie przez podkreślenie aktywnej karty, więc przewijają się w obu osiach, a iOS przekazuje im pionowe gesty przeznaczone dla strony. scrollbar-gutter: stable powoduje też skok przy pierwszym przewinięciu na iOS.

    6. Badanie

      Badamy zgłoszenia, że stron textjs.org nie można przewinąć z powrotem na górę w Safari na iOS.

    Ten incydent dotyczył: textjs.org.

    Analiza incydentu

    Strony textjs.org nie przesuwają się podczas ładowania, więc kotwiczenie przewijania nie miało czego korygować. W Safari na iOS blokowało sekcję główną pod przyklejonym nagłówkiem i uniemożliwiało przewinięcie na górę. ?debug=scroll na textjs.org pokazuje teraz na żywo zdarzenia przewijania, dotyku i zmiany rozmiaru oraz wskazuje źródło każdego programowego wywołania ustawienia fokusu lub przewijania.

    Poprawki: 297c5d7, 55da525, 8424fcd · Lista zmian: 1.0.0

  • Testy reguł lintowania nie przechodzą w CI23 paź 2026 · Rozwiązano
    1. Rozwiązano

      Tester odczytuje teraz it.only leniwie, gdy test wywołuje RuleTester.itOnly. CI przechodzi.

    2. Zidentyfikowano

      Bun zgłasza wyjątek przy odczycie it.only, gdy ustawiona jest zmienna środowiskowa CI. Tester reguł przypisuje RuleTester.itOnly = it.only podczas importu, więc jego ładowanie kończy się błędem.

    3. Badanie

      Zestaw testów eslint-plugin-textjs kończy się błędem w CI, zanim uruchomi się jakikolwiek test reguły. Lokalne uruchomienia przechodzą.

    Analiza incydentu

    @typescript-eslint/rule-tester przyjmuje funkcje testowe jako statyczne właściwości RuleTester. Poprawka opakowuje it.only w funkcję. Problem nie dotknął żadnego pakietu ani strony.

    Poprawka: eca3f78

  • Przesunięcie layoutu na /playground i /opencode21 paź – 22 paź 2026 · Rozwiązano
    1. Rozwiązano

      Skumulowane przesunięcie layoutu wynosi 0 na każdej trasie.

    2. Monitorowanie

      Wdrożyliśmy poprawkę. Obie strony mają wspólny layout panelu, a rozmiar jest dopisywany bez przesuwania opcji „Dopasuj do konsoli”. Monitorujemy sytuację.

    3. Zidentyfikowano

      Kontrolka rozmiaru konsoli dopisuje zmierzony rozmiar do etykiety po hydratacji (Fit console · 120×36), co przesuwa węzeł tekstowy „Dopasuj konsolę”. Górny i dolny wiersz panelu mają też różne wysokości na obu stronach, więc panel ponownie się wyśrodkowuje przy nawigacji.

    4. Badanie

      Nasz audyt przesunięć layoutu zgłasza skumulowane przesunięcie layoutu wynoszące 0,0001 na /playground i /opencode. Dla każdej innej objętej nim trasy zgłasza 0. Panel fokusu również przesuwa się przy przechodzeniu między tymi dwiema stronami.

    Ten incydent dotyczył: textjs.org.

    Analiza incydentu

    Panel ma teraz górny i dolny obszar o stałej wysokości, a każde demo rezerwuje te same wiersze, więc zmiana stron lub dem niczego nie przesuwa. Panel połączenia OpenCode pokazuje jeden wiersz statusu w każdym stanie, ze szkieletem do czasu hydratacji. apps/web/scripts/e2e-layout.mjs sprawdza identyczność obszarów między trasami, demami, rozmiarami widoku i stanami połączenia.

    Poprawka: 8f22b9b · Lista zmian: 1.0.0

  • Panel boczny dokumentacji znika z widoku na końcu długich stron16 paź – 17 paź 2026 · Rozwiązano
    1. Rozwiązano

      Ten incydent został rozwiązany.

    2. Monitorowanie

      Wdrożyliśmy poprawkę. Rozdziały sekcji Nauka też renderują stopkę wewnątrz kolumny treści. Monitorujemy sytuację.

    3. Zidentyfikowano

      Panel boczny rozdziałów w sekcji Nauka ma ten sam problem.

    4. Monitorowanie

      Wdrożyliśmy poprawkę. Strony dokumentacji renderują stopkę wewnątrz kolumny treści, więc layout sięga do dołu strony.

    5. Zidentyfikowano

      Panel boczny ma position: sticky wewnątrz layoutu dokumentacji, a stopka witryny renderuje się za tym layoutem. Element sticky pozostaje przypięty tylko wtedy, gdy jego blok zawierający jest na ekranie, więc gdy pojawia się stopka, zabiera ze sobą panel boczny.

    6. Badanie

      Badamy zgłoszenia o znikaniu panelu bocznego dokumentacji z widoku na dole długich stron.

    Ten incydent dotyczył: textjs.org.

    Analiza incydentu

    Strony z przypiętym panelem bocznym (dokumentacja i rozdziały sekcji Nauka) renderują stopkę w swojej kolumnie treści. Pozostałe strony zachowują wspólną stopkę.

    Poprawka: 131ac96 · Lista zmian: 1.0.0

  • Nazwa pakietu textjs niedostępna w npm14 paź – 15 paź 2026 · Rozwiązano
    1. Rozwiązano

      Ten incydent został rozwiązany.

    2. Monitorowanie

      Pakiet frameworka i CLI to teraz @textjs/next, w tym samym zakresie co @textjs/core i @textjs/react. Importy zmieniają się z textjs na @textjs/next.

    3. Zidentyfikowano

      Nazwa textjs należy do innego pakietu npm od 25 marca 2016.

    4. Badanie

      Publikowanie pakietu frameworka textjs w npm kończy się błędem 403 Forbidden.

    Analiza incydentu

    Od Text.js 1.0 aplikacje importują z @textjs/next zamiast textjs, a most OpenCode to bunx @textjs/app proxy, który działa z dowolnego katalogu.

    Text.js 1.0: Jedna zmiana nazwy · Lista zmian: 1.0.0

wrzesień 2026

  • Puste warstwy malowania na podziałach wierszy15 wrz – 16 wrz 2026 · Rozwiązano
    1. Rozwiązano

      Ten incydent został rozwiązany.

    2. Monitorowanie

      Wdrożyliśmy poprawkę. Podziały wierszy, które nie kontynuują ciągu, najpierw resetują teraz %c do pustego stylu, więc DevTools emituje zwykły znak nowego wiersza. Każda klatka ma jedną kurtynę.

    3. Zidentyfikowano

      Gdy ciąg ze stylem kończy się na podziale wiersza, \n jest zapisywany wewnątrz spanu %c tego ciągu. DevTools dzieli span na końcu wiersza, a pusta reszta staje się spanem display: inline-block z contain: paint, który otrzymuje własną warstwę malowania.

    4. Badanie

      Badamy puste elementy <span> na większości podziałów wierszy w klatkach DevTools oraz podwójny span kurtyny w niektórych klatkach.

    Ten incydent dotyczył: Turbolog encoder.

    Analiza incydentu

    Spany z tym samym stylem nadal łączą się przez podziały wierszy. Kurtyna trafiła też do osobnego wiersza: DevTools umieszcza link do źródła (VM12:1) po prawej stronie pierwszego wiersza komunikatu, a kurtyna w wierszu zostawiała ten link obok wiersza 0, zwężając go.

    Lista zmian: 1.0.0

sierpień 2026

  • Większe opóźnienie wyświetlania po console.clear27 sie – 31 sie 2026 · Rozwiązano
    1. Rozwiązano

      Mediana opóźnienia wyświetlania w bench/devtools wynosi 10,4 ms. Poprawka trafi do Text.js 1.0.

    2. Monitorowanie

      Wdrożyliśmy poprawkę. Po każdej klatce, która czyści konsolę, renderer czeka jednorazowo 110 ms, więc kolejne klatki docierają ponad 50 ms po poprzednim odświeżeniu DevTools i trafiają na ścieżkę natychmiastowego wykonania.

    3. Zidentyfikowano

      Po wyczyszczeniu DevTools wstawia wiersz „Konsola została wyczyszczona”. Zajmuje on slot natychmiastowego wykonania mechanizmu ograniczania częstotliwości i przesuwa następną klatkę na timer 50 ms. Przy odstępach 66 ms między klatkami każda kolejna klatka pozostaje na tym timerze.

    4. Badanie

      bench/devtools zgłasza medianę opóźnienia wyświetlania 63 ms po wyczyszczeniu konsoli. Opóźnienie pozostaje na tym poziomie dla każdej kolejnej klatki.

    Ten incydent dotyczył: DevTools Throttler, console.clear.

    Analiza incydentu

    Dyskretne dane wejściowe nadal renderują się synchronicznie, gdy pozwala na to odstęp między klatkami.

    Przerwanie blokady fazowej · Lista zmian: 1.0.0

  • Spinner zaburza wyrównanie wierszy w konsoli DevTools11 sie – 12 sie 2026 · Rozwiązano
    1. Rozwiązano

      Ten incydent został rozwiązany. Poprawka trafi do Text.js 1.0.

    2. Monitorowanie

      Wdrożyliśmy poprawkę. Domyślny spinner dots rysuje teraz bloki ćwiartkowe (▘ ▝ ▗ ▖), każdy o szerokości jednej komórki w Menlo. Klatki brajlowskie są dostępne jako variant="braille" dla terminali.

    3. Zidentyfikowano

      Domyślny spinner rysuje wzory brajlowskie (od U+2800 do U+28FF). Text.js mierzy każdy jako jedną komórkę, ale Menlo, font konsoli DevTools w systemie macOS, nie ma glifów brajlowskich. Glif zastępczy jest szerszy niż komórka i przesuwa resztę wiersza w prawo.

    4. Badanie

      W systemie macOS wiersze zawierające <Spinner> są niewyrównane w DevTools. Komórki po prawej stronie spinnera wypadają poza siatkę.

    Ten incydent dotyczył: console.log.

    Analiza incydentu

    LineChart domyślnie rysuje kropki ćwiartkowe z tego samego powodu. Brajl jest dostępny przez marker="braille".

    Lista zmian: 1.0.0

maj 2026

  • Więcej pustych odmalowań w konsoli DevTools5 maj – 19 maj 2026 · Rozwiązano
    1. Rozwiązano

      Poprawka jest dostępna w Text.js 0.4.0. Puste odmalowania stanowią 1,0%, wszystkie przy pierwszej klatce.

    2. Monitorowanie

      textjs.org dopisuje teraz klatki zamiast czyścić konsolę. Span kurtyny o zerowej szerokości utrzymuje wcześniejsze klatki poza widokiem, a odstęp między klatkami wynosi co najmniej 66 ms.

    3. Zidentyfikowano

      DevTools wykonuje console.clear() synchronicznie, ale maluje nowe komunikaty z ograniczeniem częstotliwości do 50 ms. Każda klatka natychmiast usuwa poprzednią i jest malowana do 50 ms później. W bench/devtools dashboard 100×32 był pusty podczas 70,6% odmalowań DevTools przy 15 fps i 81,1% przy 60 fps.

    4. Badanie

      Badamy zgłoszenia o miganiu pustej konsoli DevTools między klatkami pod obciążeniem.

    Ten incydent dotyczył: console.clear, DevTools Throttler.

    Analiza incydentu

    Od wersji 0.1.0 Turbolog wysyłał jedno console.clear() i jedno console.log() na każdą zmienioną klatkę. Narzędzie bench/devtools, które steruje rzeczywistym frontendem DevTools w Chrome for Testing, powstało do pomiaru tego incydentu i dostarczyło liczby z powyższej tabeli frontendu DevTools.

    Poprawka: f007ade · Turbolog: eliminowanie migotania · Historia zmian: 0.4.0

kwiecień 2026

  • Ścieżki plików w klatkach konsoli stylizowane jak linki14 kwi – 15 kwi 2026 · Rozwiązano
    1. Rozwiązano

      Ten incydent został rozwiązany.

    2. Monitorowanie

      Wdrożyliśmy poprawkę. Enkoder wstawia word joiner (U+2060) do tekstu path:line, //host:port i data:, chyba że komórka zezwala na linki.

    3. Zidentyfikowano

      DevTools zamienia adresy URL oraz tekst path:line i //host:port w komunikatach konsoli na linki i narzuca im kolory swojego motywu. Enkoder już rozdzielał :// i www., ale path:line oraz //host:port po schemacie nadal pasują do wzorca.

    4. Badanie

      Tekst taki jak src/app.tsx:12 i http://localhost:3000 renderuje się w kolorze linków DevTools zamiast w stylu %c.

    Ten incydent dotyczył: Turbolog encoder.

    Analiza incydentu

    :// i www. zawierają word joiner od wersji 0.1.0. Komórki, które mają pozostać klikalne, ustawiają atrybut allow-link i są zapisywane bez zmian.

    Historia zmian: 0.4.0

listopad 2025

  • Opóźnione naciśnięcia klawiszy w aplikacjach konsolowych4 lis – 18 lis 2025 · Rozwiązano
    1. Rozwiązano

      Poprawka jest dostępna w Text.js 0.3.0.

    2. Monitorowanie

      Wdrożyliśmy poprawkę. Dyskretne dane wejściowe, takie jak naciśnięcie klawisza lub wklejenie, renderują się teraz synchronicznie w tym samym zadaniu. Pozostałe aktualizacje nadal są zatwierdzane przy requestAnimationFrame.

    3. Zidentyfikowano

      Każda aktualizacja, w tym naciśnięcie klawisza, czeka na następne requestAnimationFrame, zanim React zatwierdzi zmiany i klatka zostanie zapisana w konsoli.

    4. Badanie

      Pisanie w aplikacjach konsolowych reaguje z opóźnieniem na klawiaturę, co najbardziej widać w OpenCode na textjs.org.

    Ten incydent dotyczył: textjs.org.

    Analiza incydentu

    Naciśnięcia klawiszy nie czekają już na następną klatkę animacji. Commity, które nie pochodzą z danych wejściowych, na przykład z timerów i danych strumieniowych, nadal są grupowane na klatkę animacji.

    Poprawka: 8c2d1b1 · Lista zmian: 0.3.0