Status
console.logDziałaconsole.clearRzadko używaneYogaDziałaTurbolog encoderDziałaDevTools ThrottlerRespektowanetextjs.orgDziałaBenchmark 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.
| Wydanie | Pełna klatka | Pisanie | Bezczynność | spany %c |
|---|---|---|---|---|
0.1.0mar 2025 · @textjs/core · 7c91cea | 0.194ms | 0.065ms | 0.043ms | 205 |
0.2.0lip 2025 · textjs.org · 92437cc | 0.192ms | 0.067ms | 0.042ms | 205 |
0.3.0lis 2025 · 10× input · 8c2d1b1 | 0.205ms | 0.065ms | 0.043ms | 146 |
0.3.0lis 2025 · Mobile pass · e2e6e46 | 0.212ms | 0.067ms | 0.045ms | 146 |
0.4.0maj 2026 · Zero-flash frames · f007ade | 0.184ms | 0.046ms | 0.028ms | 146 |
1.0.0paź 2026 · Text.js 1.0 · 57968b6 | 0.163ms | 0.011ms | 0.000ms | 149 |
Frontend DevTools
bench/devtools w Chrome for Testing: puste odrysowania, dostarczone klatki i opóźnienie wyświetlania, 5 s na pomiar. Jak mierzymy.
| Sterownik | FPS | Puste odrysowania | Odrysowane / wyemitowane | Opóźnienie p50 |
|---|---|---|---|---|
| Dopisywanie (obecna wersja) | 15 | 1.0% | 74 / 75 | 10.4ms |
| Czyszczenie co klatkę | 15 | 70.6% | 70 / 75 | 60.4ms |
| Dopisywanie bez odstępów | 60 | 0.8% | 67 / 295 | 31.2ms |
| Czyszczenie co klatkę | 60 | 81.1% | 45 / 300 | 9.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
- Rozwiązano
Ten incydent został rozwiązany.
- Monitorowanie
Wdrożono poprawkę. Kotwiczenie przewijania jest wyłączone (
overflow-anchor: none). Monitorujemy sytuację. - 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.
- Monitorowanie
Wdrożono poprawkę. Te elementy przewijają się teraz tylko w poziomie, a
scrollbar-gutter: stabledotyczy tylko urządzeń z myszą. - 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: stablepowoduje też skok przy pierwszym przewinięciu na iOS. - 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=scrollna 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- Rozwiązano
Testy reguł lintowania nie przechodzą w CI23 paź 2026 · Rozwiązano
- Rozwiązano
Tester odczytuje teraz
it.onlyleniwie, gdy test wywołujeRuleTester.itOnly. CI przechodzi. - Zidentyfikowano
Bun zgłasza wyjątek przy odczycie
it.only, gdy ustawiona jest zmienna środowiskowaCI. Tester reguł przypisujeRuleTester.itOnly = it.onlypodczas importu, więc jego ładowanie kończy się błędem. - Badanie
Zestaw testów
eslint-plugin-textjskończy się błędem w CI, zanim uruchomi się jakikolwiek test reguły. Lokalne uruchomienia przechodzą.
Analiza incydentu
@typescript-eslint/rule-testerprzyjmuje funkcje testowe jako statyczne właściwościRuleTester. Poprawka opakowujeit.onlyw funkcję. Problem nie dotknął żadnego pakietu ani strony.Poprawka:
eca3f78- Rozwiązano
Przesunięcie layoutu na /playground i /opencode21 paź – 22 paź 2026 · Rozwiązano
- Rozwiązano
Skumulowane przesunięcie layoutu wynosi 0 na każdej trasie.
- Monitorowanie
Wdrożyliśmy poprawkę. Obie strony mają wspólny layout panelu, a rozmiar jest dopisywany bez przesuwania opcji „Dopasuj do konsoli”. Monitorujemy sytuację.
- 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. - 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.mjssprawdza identyczność obszarów między trasami, demami, rozmiarami widoku i stanami połączenia.Poprawka:
8f22b9b· Lista zmian: 1.0.0- Rozwiązano
Nazwa pakietu textjs niedostępna w npm14 paź – 15 paź 2026 · Rozwiązano
- Rozwiązano
Ten incydent został rozwiązany.
- Monitorowanie
Pakiet frameworka i CLI to teraz
@textjs/next, w tym samym zakresie co@textjs/corei@textjs/react. Importy zmieniają się ztextjsna@textjs/next. - Zidentyfikowano
Nazwa
textjsnależy do innego pakietu npm od 25 marca 2016. - Badanie
Publikowanie pakietu frameworka
textjsw npm kończy się błędem403 Forbidden.
Analiza incydentu
Od Text.js 1.0 aplikacje importują z
@textjs/nextzamiasttextjs, a most OpenCode tobunx @textjs/app proxy, który działa z dowolnego katalogu.- Rozwiązano
wrzesień 2026
Puste warstwy malowania na podziałach wierszy15 wrz – 16 wrz 2026 · Rozwiązano
- Rozwiązano
Ten incydent został rozwiązany.
- Monitorowanie
Wdrożyliśmy poprawkę. Podziały wierszy, które nie kontynuują ciągu, najpierw resetują teraz
%cdo pustego stylu, więc DevTools emituje zwykły znak nowego wiersza. Każda klatka ma jedną kurtynę. - Zidentyfikowano
Gdy ciąg ze stylem kończy się na podziale wiersza,
\njest zapisywany wewnątrz spanu%ctego ciągu. DevTools dzieli span na końcu wiersza, a pusta reszta staje się spanemdisplay: inline-blockzcontain: paint, który otrzymuje własną warstwę malowania. - 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.- Rozwiązano
sierpień 2026
Większe opóźnienie wyświetlania po console.clear27 sie – 31 sie 2026 · Rozwiązano
- Rozwiązano
Mediana opóźnienia wyświetlania w
bench/devtoolswynosi 10,4 ms. Poprawka trafi do Text.js 1.0. - 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.
- 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.
- Badanie
bench/devtoolszgł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.
- Rozwiązano
Spinner zaburza wyrównanie wierszy w konsoli DevTools11 sie – 12 sie 2026 · Rozwiązano
- Rozwiązano
Ten incydent został rozwiązany. Poprawka trafi do Text.js 1.0.
- Monitorowanie
Wdrożyliśmy poprawkę. Domyślny spinner
dotsrysuje teraz bloki ćwiartkowe (▘ ▝ ▗ ▖), każdy o szerokości jednej komórki w Menlo. Klatki brajlowskie są dostępne jakovariant="braille"dla terminali. - 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.
- 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
LineChartdomyślnie rysuje kropki ćwiartkowe z tego samego powodu. Brajl jest dostępny przezmarker="braille".- Rozwiązano
maj 2026
Więcej pustych odmalowań w konsoli DevTools5 maj – 19 maj 2026 · Rozwiązano
- Rozwiązano
Poprawka jest dostępna w Text.js 0.4.0. Puste odmalowania stanowią 1,0%, wszystkie przy pierwszej klatce.
- 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.
- 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. Wbench/devtoolsdashboard 100×32 był pusty podczas 70,6% odmalowań DevTools przy 15 fps i 81,1% przy 60 fps. - 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 jednoconsole.log()na każdą zmienioną klatkę. Narzędziebench/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- Rozwiązano
kwiecień 2026
Ścieżki plików w klatkach konsoli stylizowane jak linki14 kwi – 15 kwi 2026 · Rozwiązano
- Rozwiązano
Ten incydent został rozwiązany.
- Monitorowanie
Wdrożyliśmy poprawkę. Enkoder wstawia word joiner (U+2060) do tekstu
path:line,//host:portidata:, chyba że komórka zezwala na linki. - Zidentyfikowano
DevTools zamienia adresy URL oraz tekst
path:linei//host:portw komunikatach konsoli na linki i narzuca im kolory swojego motywu. Enkoder już rozdzielał://iwww., alepath:lineoraz//host:portpo schemacie nadal pasują do wzorca. - Badanie
Tekst taki jak
src/app.tsx:12ihttp://localhost:3000renderuje się w kolorze linków DevTools zamiast w stylu%c.
Ten incydent dotyczył: Turbolog encoder.
Analiza incydentu
://iwww.zawierają word joiner od wersji 0.1.0. Komórki, które mają pozostać klikalne, ustawiają atrybut allow-link i są zapisywane bez zmian.- Rozwiązano
listopad 2025
Opóźnione naciśnięcia klawiszy w aplikacjach konsolowych4 lis – 18 lis 2025 · Rozwiązano
- Rozwiązano
Poprawka jest dostępna w Text.js 0.3.0.
- 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. - 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. - 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- Rozwiązano