狀態
console.log運作正常console.clear很少使用Yoga運作正常Turbolog encoder運作正常DevTools Throttler已遵循textjs.org運作正常即時效能測試
@textjs/core 管線在此分頁的 100×32 儀表板上執行,並將影格寫入記憶體內的主控台。
- 完整影格
- —
- 版面配置 + 繪製 + 編碼
- 輸入
- —
- 單列編輯
- 閒置影格
- —
- 無變更
- %c span
- —
- 3,200 個儲存格
頁面閒置後自動開始。
效能歷史
各里程碑在同一台機器(Apple M5 Pro · Bun 1.4.4)執行 packages/core/test/perf.test.ts。取 1000 個影格的平均值。
| 版本 | 完整影格 | 輸入 | 閒置 | %c span |
|---|---|---|---|---|
0.1.02025年3月 · @textjs/core · 7c91cea | 0.194ms | 0.065ms | 0.043ms | 205 |
0.2.02025年7月 · textjs.org · 92437cc | 0.192ms | 0.067ms | 0.042ms | 205 |
0.3.02025年11月 · 10× input · 8c2d1b1 | 0.205ms | 0.065ms | 0.043ms | 146 |
0.3.02025年11月 · Mobile pass · e2e6e46 | 0.212ms | 0.067ms | 0.045ms | 146 |
0.4.02026年5月 · Zero-flash frames · f007ade | 0.184ms | 0.046ms | 0.028ms | 146 |
1.0.02026年10月 · Text.js 1.0 · 57968b6 | 0.163ms | 0.011ms | 0.000ms | 149 |
DevTools 前端
在 Chrome for Testing 執行 bench/devtools:測量空白繪製、送達影格和顯示延遲,每次執行 5 秒。測量方式。
| 驅動方式 | FPS | 空白繪製 | 已繪製 / 已送出 | 延遲 p50 |
|---|---|---|---|---|
| 附加(現行版) | 15 | 1.0% | 74 / 75 | 10.4ms |
| 每個影格清除 | 15 | 70.6% | 70 / 75 | 60.4ms |
| 附加,不限頻率 | 60 | 0.8% | 67 / 295 | 31.2ms |
| 每個影格清除 | 60 | 81.1% | 45 / 300 | 9.8ms |
過往事件
由新到舊排列。時間皆為 UTC。
2026年10月
iOS Safari 頁面卡在頁首下方10月27日 – 2026年10月28日 · 已解決
- 已解決
此事件已解決。
- 監控中
修正已部署。已關閉捲動錨定(
overflow-anchor: none)。我們正在監控。 - 已確認原因
向下捲動再捲回上方後,主視覺標題仍可能卡在固定頁首下方。Safari 的捲動錨定正在調整捲動位置。
- 監控中
修正已部署。這些元素現在只能水平捲動,且
scrollbar-gutter: stable僅套用於滑鼠裝置。 - 已確認原因
檔案分頁、程式碼區塊和內文表格因作用中分頁的底線而產生 1 px 的垂直溢位,因此兩個軸向都能捲動,iOS 便將原本要捲動頁面的垂直滑動交給這些元素。
scrollbar-gutter: stable也會讓 iOS 上的首次捲動跳動。 - 調查中
我們正在調查 textjs.org 頁面在 iOS Safari 無法捲回頂端的回報。
此事件影響:textjs.org。
事後檢討
textjs.org 頁面載入時不會位移,因此捲動錨定無須修正位置。在 iOS Safari 上,捲動錨定將主視覺固定在固定頁首下方,導致頁面無法捲回頂端。textjs.org 上的
?debug=scroll現在會即時顯示捲動、觸控和尺寸調整事件,並標示每次程式化聚焦或捲動呼叫的呼叫端。修正:
297c5d7,55da525,8424fcd· 更新紀錄:1.0.0- 已解決
Lint 規則測試在 CI 失敗2026年10月23日 · 已解決
- 已解決
測試器現在延後讀取
it.only,直到測試呼叫RuleTester.itOnly。CI 已通過。 - 已確認原因
設定
CI環境變數時,讀取it.only會讓 Bun 擲出例外。規則測試器在匯入時指派RuleTester.itOnly = it.only,因此載入失敗。 - 調查中
eslint-plugin-textjs測試套件在 CI 中尚未執行任何規則測試就失敗。本機執行則通過。
事後檢討
@typescript-eslint/rule-tester以RuleTester的靜態屬性接收測試函式。此修正將it.only包在函式內。沒有套件或頁面受到影響。修正:
eca3f78- 已解決
/playground 和 /opencode 的版面配置位移10月21日 – 2026年10月22日 · 已解決
- 已解決
每個路由的累計版面配置位移皆為 0。
- 監控中
修正已部署。兩個頁面共用同一個焦點區版面配置,附加尺寸時不再移動「配合主控台」。我們正在監控。
- 已確認原因
主控台尺寸控制項在 hydration 後將測量尺寸附加至標籤(
Fit console · 120×36),使「配合主控台」文字節點移動。焦點區的頂列和底列在兩個頁面中的高度也不同,因此導覽時會重新置中。 - 調查中
版面配置位移稽核回報 /playground 和 /opencode 的累計版面配置位移為 0.0001。涵蓋的其餘路由皆為 0。在這兩個頁面之間導覽時,焦點區也會移動。
此事件影響:textjs.org。
事後檢討
焦點區現在有固定高度的頂部和底部插槽,每個示範也預留相同的列,因此切換頁面或示範時不會有任何移動。OpenCode 連線面板在所有狀態下都顯示一行狀態,並在 hydration 完成前顯示骨架畫面。
apps/web/scripts/e2e-layout.mjs會斷言各路由、示範、檢視區尺寸和連線狀態的方框位置與尺寸一致。修正:
8f22b9b· 更新紀錄:1.0.0- 已解決
npm 上的套件名稱 textjs 無法使用10月14日 – 2026年10月15日 · 已解決
- 已解決
此事件已解決。
- 監控中
框架和 CLI 套件現在為
@textjs/next,與@textjs/core和@textjs/react位於相同範圍。匯入來源從textjs改為@textjs/next。 - 已確認原因
自 2016 年 3 月 25 日起,
textjs名稱就已屬於另一個 npm 套件。 - 調查中
將框架套件
textjs發布至 npm 時,出現403 Forbidden而失敗。
事後檢討
從 Text.js 1.0 起,應用程式改從
@textjs/next匯入,不再使用textjs,而 OpenCode 橋接指令為bunx @textjs/app proxy,可在任何目錄執行。- 已解決
2026年9月
換列處的空白繪製圖層9月15日 – 2026年9月16日 · 已解決
- 已解決
此事件已解決。
- 監控中
修正已部署。換列後若不延續樣式區段,現在會先將
%c重設為空樣式,讓 DevTools 輸出純換行字元。每個影格帶有一個遮幕。 - 已確認原因
當樣式區段在換列處結束時,
\n會寫入該區段的%cspan 內。DevTools 會在換行處拆開 span,剩餘的空白部分成為帶有contain: paint的display: inline-blockspan,並取得獨立的繪製圖層。 - 調查中
我們正在調查 DevTools 影格中多數換列處出現空的
<span>元素,以及部分影格出現雙重遮幕 span 的問題。
此事件影響:Turbolog encoder。
事後檢討
樣式相同的 span 仍會跨列合併。遮幕也移至獨立一列:DevTools 會將來源連結(
VM12:1)浮動至訊息首列右側,行內遮幕會讓該連結留在第 0 列旁,壓縮該列寬度。- 已解決
2026年8月
console.clear 後顯示延遲增加8月27日 – 2026年8月31日 · 已解決
- 已解決
bench/devtools的顯示延遲中位數為 10.4 ms。此修正隨 Text.js 1.0 發布。 - 監控中
修正已部署。每當影格清除主控台後,渲染器會等待 110 ms 一次,讓後續影格在 DevTools 上次更新超過 50 ms 後抵達,走即時更新路徑。
- 已確認原因
清除後,DevTools 會插入一列「主控台已清除」。這會占用節流器的即時執行時機,將下一個影格推入 50 ms 計時器。影格間隔為 66 ms,因此後續每個影格都會留在該計時器上。
- 調查中
bench/devtools回報,清除主控台後的顯示延遲中位數為 63 ms。之後每個影格的延遲都維持在這個水準。
此事件影響:DevTools Throttler, console.clear。
- 已解決
旋轉指示器使 DevTools 主控台的列錯位8月11日 – 2026年8月12日 · 已解決
- 已解決
此事件已解決。此修正隨 Text.js 1.0 發布。
- 監控中
修正已部署。預設的
dots旋轉指示器現在繪製象限方塊(▘ ▝ ▗ ▖),在 Menlo 中各占一個儲存格。終端機可透過variant="braille"使用點字影格。 - 已確認原因
預設旋轉指示器繪製點字圖樣(U+2800 至 U+28FF)。Text.js 將每個圖樣計為一個儲存格,但 macOS 上 DevTools 主控台使用的 Menlo 字型沒有點字字形。替代字形比儲存格寬,會將該列其餘部分向右推。
- 調查中
在 macOS 上,包含
<Spinner>的列在 DevTools 中會錯位。旋轉指示器右側的儲存格會偏離格線。
此事件影響:console.log。
- 已解決
2026年5月
DevTools 主控台空白繪製增加5月5日 – 2026年5月19日 · 已解決
- 已解決
此修正已於 Text.js 0.4.0 發布。空白繪製降至 1.0%,全都發生在第一個影格。
- 監控中
textjs.org 現在附加影格,不再清除。零寬度的遮幕 span 會將先前影格擋在視野外,影格間隔至少為 66 ms。
- 已確認原因
DevTools 同步套用
console.clear(),但以 50 ms 節流繪製新訊息。每個影格會立即移除前一個影格,最多 50 ms 後才繪製。在bench/devtools中,100×32 儀表板以 15 fps 執行時,70.6% 的 DevTools 繪製為空白;以 60 fps 執行時則為 81.1%。 - 調查中
我們正在調查 DevTools 主控台在負載下於影格之間閃現空白的回報。
此事件影響:console.clear, DevTools Throttler。
事後檢討
自 0.1.0 起,Turbolog 會在每個變更的影格傳送一次
console.clear()和一次console.log()。bench/devtools會在 Chrome for Testing 中驅動實際的 DevTools 前端,專為測量此事件而建置,並產生上方 DevTools 前端表格中的數據。修正:
f007ade· Turbolog:消除閃爍 · 變更紀錄:0.4.0- 已解決
2026年4月
主控台影格中的檔案路徑被改為連結樣式4月14日 – 2026年4月15日 · 已解決
- 已解決
此事件已解決。
- 監控中
修正已部署。編碼器會在
path:line、//host:port和data:文字中插入 word joiner(U+2060),除非儲存格允許連結。 - 已確認原因
DevTools 會將主控台訊息中的網址、
path:line和//host:port文字轉為連結,並強制套用主題色彩。編碼器原本已拆開://和www.,但path:line和通訊協定後的//host:port仍會符合連結規則。 - 調查中
src/app.tsx:12和http://localhost:3000等文字在 DevTools 中以連結色彩渲染,而非原本的%c樣式。
此事件影響:Turbolog encoder。
- 已解決
2025年11月
主控台應用程式按鍵輸入延遲11月4日 – 2025年11月18日 · 已解決
- 已解決
此修正已於 Text.js 0.3.0 發布。
- 監控中
修正已部署。按鍵或貼上等離散輸入現在會在同一個任務中同步渲染。其他更新仍在
requestAnimationFrame時提交。 - 已確認原因
每次更新(包括按鍵輸入)都會等待下一次
requestAnimationFrame,React 才提交更新並記錄影格。 - 調查中
主控台應用程式的輸入落後於鍵盤,在 textjs.org 上的 OpenCode 最明顯。
此事件影響:textjs.org。
- 已解決