Status

Alle Systeme betriebsbereitAktualisiert am 31. Oktober 2026
console.logBetriebsbereit
Vor 90 TagenEin Aufruf pro geändertem Frame, keiner im Leerlauf.Heute
console.clearSelten verwendet
Vor 90 TagenBeim ersten Frame, nach invalidate(), im Leerlauf ab 100 gestapelten Frames und bei 300.Heute
YogaBetriebsbereit
Vor 90 TagenWebAssembly-flexbox-Layout, pointScaleFactor 1.Heute
Turbolog encoderBetriebsbereit
Vor 90 TagenRow-Hash-Prüfung und Lauflängenkodierung mit %c.Heute
DevTools ThrottlerBerücksichtigt
Vor 90 TagenViewport-Drosselung auf 50 ms. Frames folgen im Abstand von mindestens 66 ms.Heute
textjs.orgBetriebsbereit
Vor 90 TagenDokumentation, Lernen, Playground, Blog und Shop.Heute

Live-Benchmark

Die @textjs/core-Pipeline läuft in diesem Tab auf einem 100×32-Dashboard und schreibt Frames in eine Konsole im Arbeitsspeicher.

Vollständiger Frame
—
Layout + Zeichnen + Kodieren
Tippen
—
Änderung einer Zeile
Frame im Leerlauf
—
nichts geändert
%c-Spans
—
3.200 Zellen

Startet automatisch, sobald die Seite im Leerlauf ist.

Performance-Verlauf

packages/core/test/perf.test.ts bei jedem Meilenstein, auf demselben Rechner (Apple M5 Pro · Bun 1.4.4). Mittelwert aus 1000 Frames.

ReleaseVollständiger FrameTippenLeerlauf%c-Spans
0.1.0März 2025 · @textjs/core · 7c91cea0.194ms0.065ms0.043ms205
0.2.0Juli 2025 · textjs.org · 92437cc0.192ms0.067ms0.042ms205
0.3.0Nov. 2025 · 10× input · 8c2d1b10.205ms0.065ms0.043ms146
0.3.0Nov. 2025 · Mobile pass · e2e6e460.212ms0.067ms0.045ms146
0.4.0Mai 2026 · Zero-flash frames · f007ade0.184ms0.046ms0.028ms146
1.0.0Okt. 2026 · Text.js 1.0 · 57968b60.163ms0.011ms0.000ms149

DevTools-Frontend

bench/devtools in Chrome for Testing: leere Renderings, ausgelieferte Frames und Anzeigeverzögerung, 5 s pro Durchlauf. So messen wir.

TreiberFPSLeere RenderingsGerendert / ausgegebenVerzögerung p50
Anhängen (aktuell)151.0%74 / 7510.4ms
Pro Frame leeren1570.6%70 / 7560.4ms
Anhängen, ungetaktet600.8%67 / 29531.2ms
Pro Frame leeren6081.1%45 / 3009.8ms

Vergangene Störungen

Neueste zuerst. Zeiten in UTC.

Oktober 2026

  • Seiten hängen in iOS Safari unter der Kopfzeile fest27. Okt. – 28. Okt. 2026 · Behoben
    1. Behoben

      Diese Störung ist behoben.

    2. Unter Beobachtung

      Eine Korrektur wurde deployt. Die Scroll-Verankerung ist deaktiviert (overflow-anchor: none). Wir beobachten weiter.

    3. Ursache gefunden

      Die Hero-Überschrift kann nach dem Herunter- und Zurückscrollen weiterhin unter der fixierten Kopfzeile hängen bleiben. Safaris Scroll-Verankerung passt die Scrollposition an.

    4. Unter Beobachtung

      Eine Korrektur wurde deployt. Diese Elemente scrollen jetzt nur horizontal, und scrollbar-gutter: stable gilt nur für Geräte mit Maus.

    5. Ursache gefunden

      Datei-Tabs, Codeblöcke und Tabellen im Fließtext haben durch die Unterstreichung des aktiven Tabs einen vertikalen Überlauf von 1 px, sodass sie auf beiden Achsen scrollen und iOS ihnen vertikale Wischgesten zuweist, die für die Seite gedacht sind. scrollbar-gutter: stable lässt außerdem den ersten Scrollvorgang unter iOS springen.

    6. In Untersuchung

      Wir untersuchen Berichte, dass sich Seiten auf textjs.org in iOS Safari nicht bis nach oben zurückscrollen lassen.

    Diese Störung betraf: textjs.org.

    Nachanalyse

    Seiten auf textjs.org verschieben sich beim Laden nicht, daher hatte die Scroll-Verankerung nichts zu korrigieren. In iOS Safari hielt sie den Hero-Bereich unter der fixierten Kopfzeile fest und verhinderte das Zurückscrollen nach oben. ?debug=scroll auf textjs.org zeigt jetzt Scroll-, Touch- und Resize-Ereignisse live an und nennt den Aufrufer jedes programmatischen Fokus- oder Scrollaufrufs.

    Korrekturen: 297c5d7, 55da525, 8424fcd · Änderungsprotokoll: 1.0.0

  • Lint-Regeltests schlagen in CI fehl23. Okt. 2026 · Behoben
    1. Behoben

      Der Tester liest it.only jetzt erst, wenn ein Test RuleTester.itOnly aufruft. CI läuft durch.

    2. Ursache gefunden

      Bun wirft beim Lesen von it.only einen Fehler, wenn die Umgebungsvariable CI gesetzt ist. Der Regeltester weist beim Import RuleTester.itOnly = it.only zu, daher schlägt das Laden fehl.

    3. In Untersuchung

      Die Testsuite von eslint-plugin-textjs schlägt in CI fehl, bevor ein Regeltest läuft. Lokal laufen die Tests durch.

    Nachanalyse

    @typescript-eslint/rule-tester übernimmt seine Testfunktionen als statische Eigenschaften von RuleTester. Die Korrektur kapselt it.only in einer Funktion. Kein Paket und keine Seite waren betroffen.

    Korrektur: eca3f78

  • Layout-Verschiebung auf /playground und /opencode21. Okt. – 22. Okt. 2026 · Behoben
    1. Behoben

      Die kumulative Layout-Verschiebung beträgt auf jeder Route 0.

    2. Unter Beobachtung

      Eine Korrektur wurde deployt. Beide Seiten verwenden dasselbe Pad-Layout, und die Größe wird angehängt, ohne „Konsole einpassen“ zu verschieben. Wir beobachten weiter.

    3. Ursache gefunden

      Die Steuerung der Konsolengröße hängt nach der Hydrierung die gemessene Größe an ihre Beschriftung an (Fit console · 120×36), wodurch sich der Textknoten „Konsole einpassen“ verschiebt. Auch die obersten und untersten Zeilen des Pads sind auf den beiden Seiten unterschiedlich hoch, sodass sich das Pad beim Navigieren neu zentriert.

    4. In Untersuchung

      Unsere Prüfung auf Layout-Verschiebungen meldet eine kumulative Layout-Verschiebung von 0,0001 auf /playground und /opencode. Jede andere geprüfte Route meldet 0. Auch das Fokus-Pad bewegt sich beim Wechsel zwischen den beiden Seiten.

    Diese Störung betraf: textjs.org.

    Nachanalyse

    Das Pad hat jetzt oben und unten Bereiche mit fester Höhe, und jede Demo reserviert dieselben Zeilen, sodass sich beim Wechsel von Seiten oder Demos nichts bewegt. Das OpenCode-Verbindungspanel zeigt in jedem Zustand eine Statuszeile, bis zur Hydrierung mit einem Platzhalter. apps/web/scripts/e2e-layout.mjs prüft identische Abmessungen und Positionen über Routen, Demos, Viewport-Größen und Verbindungszustände hinweg.

    Korrektur: 8f22b9b · Änderungsprotokoll: 1.0.0

  • Dokumentationsseitenleiste scrollt am Ende langer Seiten aus dem Bild16. Okt. – 17. Okt. 2026 · Behoben
    1. Behoben

      Diese Störung ist behoben.

    2. Unter Beobachtung

      Eine Korrektur wurde deployt. Kapitel unter Lernen rendern den Footer ebenfalls innerhalb der Inhaltsspalte. Wir beobachten weiter.

    3. Ursache gefunden

      Die Kapitel-Seitenleiste unter Lernen hat dasselbe Problem.

    4. Unter Beobachtung

      Eine Korrektur wurde deployt. Dokumentationsseiten rendern den Footer innerhalb der Inhaltsspalte, sodass das Layout bis zum Seitenende reicht.

    5. Ursache gefunden

      Die Seitenleiste ist innerhalb des Dokumentationslayouts mit position: sticky positioniert, und der Seitenfooter wird nach diesem Layout gerendert. Ein Sticky-Element bleibt nur fixiert, solange sein umschließender Block sichtbar ist. Wenn der Footer ins Bild scrollt, nimmt er daher die Seitenleiste mit.

    6. In Untersuchung

      Wir untersuchen Berichte, dass die Dokumentationsseitenleiste am Ende langer Seiten aus dem Bild scrollt.

    Diese Störung betraf: textjs.org.

    Nachanalyse

    Seiten mit fixierter Seitenleiste (Dokumentation und Lernen-Kapitel) rendern den Footer in ihrer Inhaltsspalte. Andere Seiten behalten den gemeinsamen Footer.

    Korrektur: 131ac96 · Änderungsprotokoll: 1.0.0

  • Paketname textjs auf npm nicht verfügbar14. Okt. – 15. Okt. 2026 · Behoben
    1. Behoben

      Diese Störung ist behoben.

    2. Unter Beobachtung

      Das Framework- und CLI-Paket heißt jetzt @textjs/next, im selben Scope wie @textjs/core und @textjs/react. Imports wechseln von textjs zu @textjs/next.

    3. Ursache gefunden

      Der Name textjs gehört seit dem 25. März 2016 zu einem anderen npm-Paket.

    4. In Untersuchung

      Das Veröffentlichen des Framework-Pakets textjs auf npm schlägt mit 403 Forbidden fehl.

    Nachanalyse

    Ab Text.js 1.0 importieren Apps aus @textjs/next statt aus textjs, und die OpenCode-Bridge ist bunx @textjs/app proxy, die aus jedem Verzeichnis läuft.

    Text.js 1.0: Eine Umbenennung · Änderungsprotokoll: 1.0.0

September 2026

  • Leere Zeichenebenen an Zeilenumbrüchen15. Sept. – 16. Sept. 2026 · Behoben
    1. Behoben

      Diese Störung ist behoben.

    2. Unter Beobachtung

      Ein Fix wurde deployt. Zeilenumbrüche, die keinen Abschnitt fortsetzen, setzen %c jetzt zuerst auf einen leeren Stil zurück, damit DevTools einen reinen Zeilenumbruch ausgibt. Jeder Frame enthält einen Vorhang.

    3. Ursache gefunden

      Wenn ein formatierter Abschnitt an einem Zeilenumbruch endet, steht das \n im %c-Span des Abschnitts. DevTools teilt den Span am Zeilenumbruch, und der leere Rest wird zu einem display: inline-block-Span mit contain: paint, der eine eigene Zeichenebene erhält.

    4. In Untersuchung

      Wir untersuchen leere <span>-Elemente an den meisten Zeilenumbrüchen in DevTools-Frames und einen doppelten Vorhang-Span in einigen Frames.

    Diese Störung betraf: Turbolog encoder.

    Nachanalyse

    Spans mit gleichem Stil werden weiterhin über Zeilenumbrüche hinweg zusammengeführt. Der Vorhang steht jetzt außerdem in einer eigenen Zeile: DevTools platziert den Quelllink (VM12:1) rechts neben der ersten Zeile einer Nachricht, und ein Inline-Vorhang ließ diesen Link neben Zeile 0 stehen, wodurch sie schmaler wurde.

    Änderungsprotokoll: 1.0.0

August 2026

  • Erhöhte Anzeigelatenz nach console.clear27. Aug. – 31. Aug. 2026 · Behoben
    1. Behoben

      Die mediane Anzeigeverzögerung in bench/devtools beträgt 10,4 ms. Der Fix erscheint mit Text.js 1.0.

    2. Unter Beobachtung

      Ein Fix wurde deployt. Nach jedem Frame, der die Konsole leert, wartet der Renderer einmalig 110 ms, damit spätere Frames mehr als 50 ms nach der letzten Aktualisierung von DevTools eintreffen und sofort verarbeitet werden.

    3. Ursache gefunden

      Nach dem Leeren fügt DevTools eine Zeile „Konsole wurde geleert“ ein. Sie belegt den sofortigen Ausführungsplatz der Drosselung und verschiebt den nächsten Frame auf den 50-ms-Timer. Bei 66 ms Abstand zwischen den Frames bleibt jeder spätere Frame auf diesem Timer.

    4. In Untersuchung

      bench/devtools meldet nach dem Leeren der Konsole eine mediane Anzeigeverzögerung von 63 ms. Die Verzögerung bleibt bei jedem späteren Frame auf diesem Niveau.

    Diese Störung betraf: DevTools Throttler, console.clear.

    Nachanalyse

    Diskrete Eingaben werden weiterhin synchron gerendert, wenn das Frame-Intervall es zulässt.

    Die Phasenkopplung lösen · Änderungsprotokoll: 1.0.0

  • Spinner verschiebt Zeilen in der DevTools-Konsole11. Aug. – 12. Aug. 2026 · Behoben
    1. Behoben

      Diese Störung ist behoben. Der Fix erscheint mit Text.js 1.0.

    2. Unter Beobachtung

      Ein Fix wurde deployt. Der Standard-Spinner dots zeichnet jetzt Quadrantenblöcke (▘ ▝ ▗ ▖), die in Menlo jeweils eine Zelle belegen. Die Braille-Frames sind für Terminals als variant="braille" verfügbar.

    3. Ursache gefunden

      Der Standard-Spinner zeichnet Braillemuster (U+2800 bis U+28FF). Text.js misst jedes als eine Zelle, aber Menlo, die Schrift der DevTools-Konsole unter macOS, enthält keine Braillezeichen. Das Ersatzzeichen ist breiter als eine Zelle und verschiebt den Rest der Zeile nach rechts.

    4. In Untersuchung

      Unter macOS sind Zeilen mit einem <Spinner> in DevTools falsch ausgerichtet. Zellen rechts vom Spinner liegen außerhalb des Rasters.

    Diese Störung betraf: console.log.

    Nachanalyse

    LineChart zeichnet aus demselben Grund standardmäßig Quadrantenpunkte. Braille ist mit marker="braille" verfügbar.

    Änderungsprotokoll: 1.0.0

Mai 2026

  • Vermehrt leere Darstellungen in der DevTools-Konsole5. Mai – 19. Mai 2026 · Behoben
    1. Behoben

      Der Fix ist in Text.js 0.4.0 veröffentlicht. Leere Darstellungen liegen bei 1,0 %, alle beim ersten Frame.

    2. Unter Beobachtung

      textjs.org hängt Frames jetzt an, statt die Konsole zu leeren. Ein Vorhang-Span ohne Breite hält frühere Frames außerhalb des Sichtbereichs, und Frames haben mindestens 66 ms Abstand.

    3. Ursache gefunden

      DevTools führt console.clear() synchron aus, zeichnet neue Nachrichten aber mit einer Drosselung von 50 ms. Jeder Frame entfernt den vorherigen sofort und wird bis zu 50 ms später gezeichnet. In bench/devtools war ein Dashboard mit 100×32 Zellen bei 15 fps in 70,6 % der DevTools-Zeichenvorgänge leer und bei 60 fps in 81,1 %.

    4. In Untersuchung

      Wir untersuchen Berichte, dass die DevTools-Konsole unter Last zwischen Frames leer aufblitzt.

    Diese Störung betraf: console.clear, DevTools Throttler.

    Nachanalyse

    Seit 0.1.0 hatte Turbolog pro geändertem Frame ein console.clear() und ein console.log() gesendet. bench/devtools, das das echte DevTools-Frontend in Chrome for Testing steuert, wurde zur Messung dieser Störung entwickelt und lieferte die Zahlen in der obigen Tabelle zum DevTools-Frontend.

    Korrektur: f007ade · Turbolog: Das Flackern beseitigen · Änderungsprotokoll: 0.4.0

April 2026

  • Dateipfade in Konsolen-Frames als Links umformatiert14. Apr. – 15. Apr. 2026 · Behoben
    1. Behoben

      Diese Störung ist behoben.

    2. Unter Beobachtung

      Ein Fix wurde deployt. Der Encoder fügt einen Word Joiner (U+2060) in Text mit path:line, //host:port und data: ein, sofern die Zelle keine Links erlaubt.

    3. Ursache gefunden

      DevTools wandelt URLs, path:line und //host:port in Konsolennachrichten in Links um und erzwingt dafür seine Theme-Farben. Der Encoder unterbrach bereits :// und www., aber path:line und das //host:port nach einem Schema werden weiterhin erkannt.

    4. In Untersuchung

      Text wie src/app.tsx:12 und http://localhost:3000 erscheint in der Linkfarbe von DevTools statt in seinem %c-Stil.

    Diese Störung betraf: Turbolog encoder.

    Nachanalyse

    :// und www. enthalten seit 0.1.0 einen Word Joiner. Zellen, die anklickbar bleiben sollen, setzen das allow-link-Attribut und werden unverändert ausgegeben.

    Änderungsprotokoll: 0.4.0

November 2025

  • Verzögerte Tastatureingaben in Konsolen-Apps4. Nov. – 18. Nov. 2025 · Behoben
    1. Behoben

      Der Fix ist in Text.js 0.3.0 veröffentlicht.

    2. Unter Beobachtung

      Ein Fix wurde deployt. Diskrete Eingaben wie ein Tastendruck oder das Einfügen von Text werden jetzt synchron im selben Task gerendert. Andere Aktualisierungen werden weiterhin bei requestAnimationFrame übernommen.

    3. Ursache gefunden

      Jede Aktualisierung, auch ein Tastendruck, wartet auf den nächsten requestAnimationFrame, bevor React den Commit ausführt und der Frame in der Konsole ausgegeben wird.

    4. In Untersuchung

      Beim Tippen in Konsolen-Apps hinkt die Anzeige der Tastatur hinterher, am deutlichsten in OpenCode auf textjs.org.

    Diese Störung betraf: textjs.org.

    Nachanalyse

    Tastendrücke warten nicht mehr auf den nächsten Animationsframe. Commits, die nicht von Eingaben stammen, etwa Timer und gestreamte Daten, werden weiterhin pro Animationsframe gebündelt.

    Korrektur: 8c2d1b1 · Änderungsprotokoll: 0.3.0