From dfe657e73677785158545443543058841b858fe2 Mon Sep 17 00:00:00 2001 From: wangdequan Date: Sat, 29 Aug 2026 15:52:06 +0800 Subject: [PATCH] Stream long G-code execution history with scrollable panes --- web/react/src/App.tsx | 6 ++++-- web/react/src/store.ts | 6 +++++- web/react/src/styles.css | 13 +++++++------ web/worker/wasm-program-runtime.mjs | 10 +++++++--- 4 files changed, 23 insertions(+), 12 deletions(-) diff --git a/web/react/src/App.tsx b/web/react/src/App.tsx index 69206c0..62f6492 100644 --- a/web/react/src/App.tsx +++ b/web/react/src/App.tsx @@ -93,13 +93,15 @@ function ProgramPane({ text, setText, activeGcodes, executionTrace, programStatu const mainLine = executing && currentLine && currentLine > 0 && currentLine <= lines.length ? currentLine : null; const executedLines = new Set(executionTrace.map((entry) => entry.line)); const editorRef = useRef(null); + const gutterRef = useRef(null); const highlightsRef = useRef(null); const traceRef = useRef(null); + const followTraceRef = useRef(true); useEffect(() => { const node = traceRef.current; - if (node) node.scrollTop = node.scrollHeight; + if (node && followTraceRef.current) node.scrollTop = node.scrollHeight; }, [executionTrace]); - return
{lines.map((_, index) => { const line = index + 1; const className = line === mainLine ? "current-line" : executedLines.has(line) ? "completed-line" : ""; return {line}; })}